diff --git a/L2J_Mobius_01.0_Ertheia/.classpath b/L2J_Mobius_01.0_Ertheia/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_01.0_Ertheia/.classpath +++ b/L2J_Mobius_01.0_Ertheia/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/config/AdminCommands.xml b/L2J_Mobius_01.0_Ertheia/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/CeremonyOfChaos.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/events/CeremonyOfChaos.xml deleted file mode 100644 index 7331135977..0000000000 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/CeremonyOfChaos.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - 224 - 225 - 226 - 227 - - - - - - - Ceremony of Chaos has ended. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - start - end - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index 087cf3ce1a..0000000000 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/Elpies.txt b/L2J_Mobius_01.0_Ertheia/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/Rabbits.txt b/L2J_Mobius_01.0_Ertheia/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/Race.txt b/L2J_Mobius_01.0_Ertheia/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_01.0_Ertheia/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_01.0_Ertheia/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_01.0_Ertheia/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index e25a8f60d2..e6bafc3ed3 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -155,7 +155,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -190,7 +190,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -248,7 +248,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -298,7 +298,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java index 92f5f478a9..848e1d690e 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java @@ -19,7 +19,6 @@ package ai.others.LaVieEnRose; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -128,13 +127,7 @@ public class LaVieEnRose extends AbstractNpcAI return false; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_USE_THE_BEAUTY_SHOP_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - return false; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot use the Beauty Shop while registered in an event."); return false; diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java index 19b18e1eed..35fb822883 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java @@ -336,9 +336,9 @@ public class OlyManager extends AbstractNpcAI implements IBypassHandler player.sendPacket(SystemMessageId.THE_OLYMPIAD_GAMES_ARE_NOT_CURRENTLY_IN_PROGRESS); return false; } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { - player.sendMessage("You can not observe games while registered on an event"); + player.sendMessage("You can not observe games while registered on an event."); return false; } else diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java index a3c74220a9..3afbd5674c 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; @@ -266,11 +265,7 @@ public class TrainingCamp extends AbstractNpcAI { return false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. { return false; } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 64b03b6011..fe12cb8e73 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -147,7 +147,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -172,13 +172,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -227,7 +227,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -264,6 +264,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -454,7 +455,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -481,7 +482,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -534,7 +535,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -581,7 +582,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -608,7 +609,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -639,7 +640,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -726,7 +727,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -778,7 +779,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -883,7 +884,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/MasterHandler.java index 68a5265488..11d3a31b90 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -143,7 +142,6 @@ import handlers.bypasshandlers.Buy; import handlers.bypasshandlers.ChangePlayerName; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -410,7 +408,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -479,7 +476,6 @@ public class MasterHandler ChangePlayerName.class, ChatLink.class, ClanWarehouse.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java index 95af1dea6b..f075754123 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java @@ -99,7 +99,7 @@ public class SkillConditionMasterHandler SkillConditionHandler.getInstance().registerHandler("OpNeedSummonOrPet", OpNeedSummonOrPetSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotAffectedBySkill", OpNotAffectedBySkillSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotCursed", OpNotCursedSkillCondition::new); - SkillConditionHandler.getInstance().registerHandler("OpNotInCeremonyOfChaos", OpNotInCeremonyOfChaosSkillCondition::new); + SkillConditionHandler.getInstance().registerHandler("OpNotInEvent", OpNotInEventSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInPeacezone", OpNotInPeacezoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInstantzone", OpNotInstantzoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotOlympiad", OpNotOlympiadSkillCondition::new); diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/bypasshandlers/Observation.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/bypasshandlers/Observation.java index 46a386ddd4..a7bde42217 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/bypasshandlers/Observation.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/bypasshandlers/Observation.java @@ -99,9 +99,9 @@ public class Observation implements IBypassHandler player.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_SIEGE_WITH_A_PET_OR_SERVITOR_SUMMONED); return false; } - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("Cannot use while current Event"); + player.sendMessage("Cannot use while registered on an event."); return false; } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java similarity index 80% rename from L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java rename to L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java index b5cefc61cc..8b23f3b8b5 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java @@ -19,22 +19,21 @@ package handlers.skillconditionhandlers; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.ISkillCondition; import org.l2jmobius.gameserver.model.skills.Skill; /** * @author Mobius */ -public class OpNotInCeremonyOfChaosSkillCondition implements ISkillCondition +public class OpNotInEventSkillCondition implements ISkillCondition { - public OpNotInCeremonyOfChaosSkillCondition(StatSet params) + public OpNotInEventSkillCondition(StatSet params) { } @Override public boolean canUse(Creature caster, Skill skill, WorldObject target) { - return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)); + return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent()); } } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/00000-00099.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/00000-00099.xml index b268c62dbf..3f269150cf 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/00000-00099.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/00000-00099.xml @@ -1159,7 +1159,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/00700-00799.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/00700-00799.xml index 4ab3bcdd10..26338a1796 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/00700-00799.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/00700-00799.xml @@ -393,7 +393,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -436,7 +436,7 @@ - + @@ -452,7 +452,7 @@ - + @@ -491,7 +491,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -537,7 +537,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -615,7 +615,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/00900-00999.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/00900-00999.xml index 8bbc2e27d6..642b1c5816 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/00900-00999.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/00900-00999.xml @@ -728,7 +728,7 @@ - + @@ -746,7 +746,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -788,7 +788,7 @@ - + @@ -806,7 +806,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -833,7 +833,7 @@ - + @@ -848,7 +848,7 @@ - + @@ -866,7 +866,7 @@ - + @@ -881,7 +881,7 @@ - + @@ -893,7 +893,7 @@ - + @@ -908,7 +908,7 @@ - + @@ -926,7 +926,7 @@ - + @@ -941,7 +941,7 @@ - + @@ -953,7 +953,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/01000-01099.xml index 376059b37f..fc841aa214 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/01000-01099.xml @@ -700,7 +700,7 @@ - + @@ -723,7 +723,7 @@ - + @@ -881,7 +881,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/01500-01599.xml index 8888cc8475..c4d8cb861a 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/05200-05299.xml index 41f9c9bdff..b4bc93f358 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/05200-05299.xml @@ -488,7 +488,7 @@ - + @@ -509,7 +509,7 @@ - + @@ -530,7 +530,7 @@ - + @@ -551,7 +551,7 @@ - + @@ -572,7 +572,7 @@ - + @@ -593,7 +593,7 @@ - + @@ -614,7 +614,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -656,7 +656,7 @@ - + @@ -677,7 +677,7 @@ - + @@ -698,7 +698,7 @@ - + @@ -719,7 +719,7 @@ - + @@ -740,7 +740,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -782,7 +782,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/05500-05599.xml index 3eb8c37aaf..9eb2b65043 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/05500-05599.xml @@ -1079,7 +1079,7 @@ - + @@ -1098,7 +1098,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/06400-06499.xml index 8ef613c844..6515069390 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -135,7 +135,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08100-08199.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08100-08199.xml index 1aa073404f..62dbdd0134 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08100-08199.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08100-08199.xml @@ -2125,7 +2125,7 @@ - + @@ -2142,7 +2142,7 @@ - + @@ -2159,7 +2159,7 @@ - + @@ -2176,7 +2176,7 @@ - + @@ -2193,7 +2193,7 @@ - + @@ -2210,7 +2210,7 @@ - + @@ -2227,7 +2227,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08200-08299.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08200-08299.xml index 6cc38a1670..7a75f6d934 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08200-08299.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08200-08299.xml @@ -12,7 +12,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08600-08699.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08600-08699.xml index 9e294e80c3..754444f349 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08600-08699.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08600-08699.xml @@ -374,7 +374,7 @@ - + @@ -512,7 +512,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -998,7 +998,7 @@ - + @@ -1014,7 +1014,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1046,7 +1046,7 @@ - + @@ -1062,7 +1062,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1094,7 +1094,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1126,7 +1126,7 @@ - + @@ -1142,7 +1142,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1174,7 +1174,7 @@ - + @@ -1190,7 +1190,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08700-08799.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08700-08799.xml index 84d81a4b37..5c70280280 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08700-08799.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/08700-08799.xml @@ -1104,7 +1104,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/09200-09299.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/09200-09299.xml index f3f49fe32f..11c96612e9 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/09200-09299.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/09200-09299.xml @@ -116,7 +116,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/09700-09799.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/09700-09799.xml index d2a62b73c7..f13f9c2df8 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/09700-09799.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/09700-09799.xml @@ -46,7 +46,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/10100-10199.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/10100-10199.xml index c8687ccd43..04d979d53c 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/10100-10199.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/10100-10199.xml @@ -1118,7 +1118,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/13000-13099.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/13000-13099.xml index 9d3ea6de89..19dbfcfeff 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/13000-13099.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/13000-13099.xml @@ -516,7 +516,7 @@ - + @@ -936,7 +936,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/13700-13799.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/13700-13799.xml index 7736498d85..fb0f27ccee 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/13700-13799.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/13700-13799.xml @@ -820,7 +820,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/14600-14699.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/14600-14699.xml index f7b7a38d3e..53e1f3568c 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/14600-14699.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/14600-14699.xml @@ -1802,7 +1802,7 @@ - + @@ -1935,7 +1935,7 @@ - + @@ -2051,7 +2051,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/14700-14799.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/14700-14799.xml index 7a2470d9a5..6dccf6872c 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/14700-14799.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/14700-14799.xml @@ -13,7 +13,7 @@ - + @@ -35,7 +35,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/17000-17099.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/17000-17099.xml index e4db24ccca..23ee5675ea 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/17000-17099.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/17000-17099.xml @@ -97,7 +97,7 @@ - + @@ -352,7 +352,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/20300-20399.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/20300-20399.xml index f5dd8f4ded..81e4cd8741 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/20300-20399.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/20300-20399.xml @@ -988,7 +988,7 @@ - + @@ -1104,7 +1104,7 @@ - + @@ -1220,7 +1220,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/21000-21099.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/21000-21099.xml index 44902598f6..46768f5a9e 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/21000-21099.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/21000-21099.xml @@ -686,7 +686,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -786,7 +786,7 @@ - + @@ -808,7 +808,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/21100-21199.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/21100-21199.xml index 353014adc4..d9f9c4906a 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/21100-21199.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/21100-21199.xml @@ -1575,7 +1575,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/21200-21299.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/21200-21299.xml index 57dd45dbc8..bfc7a6f496 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/21200-21299.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/21200-21299.xml @@ -203,7 +203,7 @@ - + @@ -793,7 +793,7 @@ - + @@ -812,7 +812,7 @@ - + @@ -861,7 +861,7 @@ - + @@ -880,7 +880,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/22000-22099.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/22000-22099.xml index 28a985b04c..ff10de6179 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/22000-22099.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/22000-22099.xml @@ -449,7 +449,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -737,7 +737,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/22500-22599.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/22500-22599.xml index 11efd9599e..3f5dc58143 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/22500-22599.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/22500-22599.xml @@ -1030,7 +1030,7 @@ - + @@ -1050,7 +1050,7 @@ - + @@ -1070,7 +1070,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/22600-22699.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/22600-22699.xml index 29c89bdbca..9aa039c3fd 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/22600-22699.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/22600-22699.xml @@ -432,7 +432,7 @@ - + @@ -455,7 +455,7 @@ - + @@ -478,7 +478,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23200-23299.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23200-23299.xml index 53723c8767..070aeb5463 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23200-23299.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23200-23299.xml @@ -163,7 +163,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -525,7 +525,7 @@ - + @@ -560,7 +560,7 @@ - + @@ -575,7 +575,7 @@ - + @@ -588,7 +588,7 @@ - + @@ -606,7 +606,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23300-23399.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23300-23399.xml index d2e2cc7586..7c82299cb2 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23300-23399.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23300-23399.xml @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23400-23499.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23400-23499.xml index 10b8102445..1bece4192b 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23400-23499.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23400-23499.xml @@ -1092,7 +1092,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1164,7 +1164,7 @@ - + @@ -1426,7 +1426,7 @@ - + @@ -1443,7 +1443,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23500-23599.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23500-23599.xml index e548f3cf94..80ac77ad4f 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23500-23599.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23500-23599.xml @@ -93,7 +93,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23600-23699.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23600-23699.xml index 56e3bf15c5..8e91aeeadf 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23600-23699.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/23600-23699.xml @@ -189,7 +189,7 @@ - + @@ -566,7 +566,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/30300-30399.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/30300-30399.xml index b1377f4134..b372975b62 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/30300-30399.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/30300-30399.xml @@ -985,7 +985,7 @@ - + @@ -1009,7 +1009,7 @@ - + @@ -1033,7 +1033,7 @@ - + @@ -1053,7 +1053,7 @@ - + @@ -1076,7 +1076,7 @@ - + @@ -1099,7 +1099,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/34000-34099.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/34000-34099.xml index 02171dbb9f..c6a6b1ec48 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/34000-34099.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/34000-34099.xml @@ -180,7 +180,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -220,7 +220,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/34600-34699.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/34600-34699.xml index 325d50dbf3..5ea3af8dcf 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/34600-34699.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/34600-34699.xml @@ -41,7 +41,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/35600-35699.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/35600-35699.xml index 998febc75b..cfef5598f2 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/35600-35699.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/35600-35699.xml @@ -1422,7 +1422,7 @@ - + @@ -1442,7 +1442,7 @@ - + @@ -1462,7 +1462,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/35700-35799.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/35700-35799.xml index c21fcd9241..79735f3d88 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/35700-35799.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/35700-35799.xml @@ -771,7 +771,7 @@ - + @@ -791,7 +791,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/35900-35999.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/35900-35999.xml index cb68c773cf..8e17b26d1d 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/35900-35999.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/35900-35999.xml @@ -475,7 +475,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/36000-36099.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/36000-36099.xml index 4daa3a510e..0d06fd6ba4 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/36000-36099.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/36000-36099.xml @@ -377,7 +377,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/36200-36299.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/36200-36299.xml index 3fa4f438f2..1b29c7fd47 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/36200-36299.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/36200-36299.xml @@ -785,7 +785,7 @@ - + @@ -1073,7 +1073,7 @@ - + @@ -1090,7 +1090,7 @@ - + @@ -1107,7 +1107,7 @@ - + @@ -1124,7 +1124,7 @@ - + @@ -1140,7 +1140,7 @@ - + @@ -1152,7 +1152,7 @@ - + @@ -1204,7 +1204,7 @@ - + @@ -1241,7 +1241,7 @@ - + @@ -1259,7 +1259,7 @@ - + @@ -1277,7 +1277,7 @@ - + @@ -1295,7 +1295,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/36300-36399.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/36300-36399.xml index f15411962f..10fdcf788b 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/36300-36399.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/36300-36399.xml @@ -48,7 +48,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -80,7 +80,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -119,7 +119,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/37600-37699.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/37600-37699.xml index d21592eeff..e4c536411b 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/37600-37699.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/37600-37699.xml @@ -1389,7 +1389,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/38200-38299.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/38200-38299.xml index 4f97ee8996..5e77eccd1f 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/38200-38299.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/38200-38299.xml @@ -358,7 +358,7 @@ - + @@ -375,7 +375,7 @@ - + @@ -392,7 +392,7 @@ - + @@ -409,7 +409,7 @@ - + @@ -426,7 +426,7 @@ - + @@ -443,7 +443,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/40000-40099.xml b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/40000-40099.xml index 0e63b269f4..fc3356895e 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/40000-40099.xml +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/stats/items/40000-40099.xml @@ -870,7 +870,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/items.xsd b/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/items.xsd index fb24816202..3468fc197e 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_01.0_Ertheia/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_01.0_Ertheia/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_01.0_Ertheia/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_01.0_Ertheia/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_01.0_Ertheia/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_01.0_Ertheia/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/GameServer.java index da9ad63253..2d0add5089 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/GameServer.java @@ -67,7 +67,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemGroupsData; import org.l2jmobius.gameserver.data.xml.EnchantItemHPBonusData; import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -381,8 +380,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/Shutdown.java index 9e0bc3126c..02419a263c 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/Shutdown.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.BotReportTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -452,8 +451,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index fcf73e07ba..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 3)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANT_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -79,8 +99,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -98,8 +117,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -146,12 +206,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 4f663f1e96..4835e884e6 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java index 1c96c824c0..2c3916a99c 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5037,15 +5037,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Summon.java index 919cda941e..6115effc29 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index eebbf498cd..1fd1ab70c7 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -126,7 +126,6 @@ import org.l2jmobius.gameserver.instancemanager.RecipeManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -181,7 +180,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -189,7 +187,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -215,7 +212,6 @@ import org.l2jmobius.gameserver.model.events.timers.TimerHolder; import org.l2jmobius.gameserver.model.fishing.Fishing; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -692,10 +688,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -722,7 +714,9 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnSoloEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -845,7 +839,7 @@ public class PlayerInstance extends Playable // Shared dualclass skills. private static final String KNOWN_DUAL_SKILLS_VAR = "KNOWN_DUAL_SKILLS"; - private static final int[] DUAL_CLASS_SKILLS = new int[] + private static final int[] DUAL_CLASS_SKILLS = { 19222, // Dignity of the Exalted 19223, // Belief of the Exalted @@ -2927,11 +2921,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4867,10 +4857,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5034,7 +5020,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5360,7 +5346,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8120,7 +8106,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8181,22 +8167,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return isOnSoloEvent() || (getTeam() != attacker.getTeam()); } // Check if the attacker is a Playable @@ -9371,12 +9348,7 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) - { - _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; - return false; - } - if (isOnEvent()) // custom event message + if (_inOlympiadMode || isRegisteredOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11174,12 +11146,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -13047,16 +13013,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13154,21 +13110,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13228,13 +13169,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13248,66 +13182,50 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; + } + + public boolean isOnSoloEvent() + { + return _isOnSoloEvent; + } + + public void setOnSoloEvent(boolean value) + { + _isOnSoloEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13866,63 +13784,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index a30002000f..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,668 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 0b10e75f59..94eee3bae6 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java index fb0f2bb3da..06efad6874 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java @@ -18,7 +18,7 @@ package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; import java.util.List; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; @@ -27,21 +27,21 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; */ public class OnCeremonyOfChaosMatchResult implements IBaseEvent { - private final List _winners; - private final List _members; + private final List _winners; + private final List _members; - public OnCeremonyOfChaosMatchResult(List winners, List members) + public OnCeremonyOfChaosMatchResult(List winners, List members) { _winners = winners; _members = members; } - public List getWinners() + public List getWinners() { return _winners; } - public List getMembers() + public List getMembers() { return _members; } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index b323a33915..29cce0c911 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANT_ZONE); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/items/Item.java index 5556524f8d..4e8384244c 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -146,7 +145,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -219,7 +218,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -854,9 +853,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -931,11 +930,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index f89ea497b6..6d8f4d70e0 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -248,9 +248,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index ae3afaba5c..d71e1bc592 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index d9a271f737..f9b4342d3c 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -45,7 +45,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -419,11 +418,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 39e28b4a7e..a1b584e066 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; /** @@ -84,14 +82,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index b0676e562d..c2cb56b495 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java index 1484aa6a78..c8902e8330 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillTreeData; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -95,12 +94,12 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket player.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java index b56146b9f3..71a226b8be 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java @@ -21,7 +21,6 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AbilityPointsData; import org.l2jmobius.gameserver.enums.UserInfoType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -66,12 +65,13 @@ public class RequestChangeAbilityPoint implements IClientIncomingPacket return; } - if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + + if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java index 572d41545f..589cbaf37c 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java @@ -23,7 +23,6 @@ import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.enums.SkillFinishType; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -64,12 +63,12 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket client.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { client.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java index ce871f6a18..88a7ec13b1 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,15 +42,15 @@ public class RequestCancelCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } + // if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); + // player.sendPacket(ExCuriousHouseState.IDLE_PACKET); + // + // if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) + // { + // player.prohibiteCeremonyOfChaos(); + // } + // } } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java index a4e6f04627..c9e0872ac9 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; /** * @author Sdw @@ -46,21 +42,21 @@ public class RequestCuriousHouseHtml implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) + // { + // final NpcHtmlMessage message = new NpcHtmlMessage(0); + // message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); + // player.sendPacket(message); + // } } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java index 33ca3d7b33..9fd38f3805 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,25 +42,25 @@ public class RequestJoinCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); + // player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); + // player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); + // } + // else + // { + // player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); + // } } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 0b991b2326..741cec4a27 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed packet.writeD(_z); // Confirmed @@ -265,7 +261,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java index d26eee8d89..7c74a35616 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java @@ -20,7 +20,6 @@ import java.util.Collection; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -31,9 +30,9 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket { private final int _id; private final int _maxPlayers; - private final Collection _players; + private final Collection _players; - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) + public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) { _id = id; _maxPlayers = maxPlayers; @@ -48,25 +47,14 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket packet.writeD(_id); packet.writeD(_maxPlayers); packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) + for (PlayerInstance player : _players) { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getMaxHp()); + packet.writeD(player.getMaxCp()); + packet.writeD((int) player.getCurrentHp()); + packet.writeD((int) player.getCurrentCp()); } return true; } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java index 1f09c4de0d..27605b732b 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java @@ -16,10 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; +import java.util.Collection; + import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -29,30 +30,30 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; public class ExCuriousHouseResult implements IClientOutgoingPacket { private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; + private final Collection _players; - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) + public ExCuriousHouseResult(CeremonyOfChaosResult result, Collection players) { _result = result; - _event = event; + _players = players; } @Override public boolean write(PacketWriter packet) { OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); + packet.writeD(0); // _event.getId() packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> + packet.writeD(_players.size()); // CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + packet.writeD(_players.size()); + for (PlayerInstance player : _players) { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getClassId().getId()); + packet.writeD(0x00); // getLifeTime + packet.writeD(0x00); // getScore + } return true; } } diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_02.5_Underground/.classpath b/L2J_Mobius_02.5_Underground/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_02.5_Underground/.classpath +++ b/L2J_Mobius_02.5_Underground/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_02.5_Underground/dist/game/config/AdminCommands.xml b/L2J_Mobius_02.5_Underground/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/events/CeremonyOfChaos.xml b/L2J_Mobius_02.5_Underground/dist/game/data/events/CeremonyOfChaos.xml deleted file mode 100644 index 7331135977..0000000000 --- a/L2J_Mobius_02.5_Underground/dist/game/data/events/CeremonyOfChaos.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - 224 - 225 - 226 - 227 - - - - - - - Ceremony of Chaos has ended. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - start - end - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_02.5_Underground/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_02.5_Underground/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_02.5_Underground/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index 087cf3ce1a..0000000000 --- a/L2J_Mobius_02.5_Underground/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/events/Elpies.txt b/L2J_Mobius_02.5_Underground/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_02.5_Underground/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/events/Rabbits.txt b/L2J_Mobius_02.5_Underground/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_02.5_Underground/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/events/Race.txt b/L2J_Mobius_02.5_Underground/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_02.5_Underground/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_02.5_Underground/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_02.5_Underground/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_02.5_Underground/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_02.5_Underground/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_02.5_Underground/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_02.5_Underground/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index eaf1654a53..5aa0dcadd7 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -155,7 +155,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -190,7 +190,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -248,7 +248,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -298,7 +298,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java index 92f5f478a9..848e1d690e 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java @@ -19,7 +19,6 @@ package ai.others.LaVieEnRose; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -128,13 +127,7 @@ public class LaVieEnRose extends AbstractNpcAI return false; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_USE_THE_BEAUTY_SHOP_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - return false; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot use the Beauty Shop while registered in an event."); return false; diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java index b8821136b1..f128e32650 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java @@ -336,9 +336,9 @@ public class OlyManager extends AbstractNpcAI implements IBypassHandler player.sendPacket(SystemMessageId.THE_OLYMPIAD_GAMES_ARE_NOT_CURRENTLY_IN_PROGRESS); return false; } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { - player.sendMessage("You can not observe games while registered on an event"); + player.sendMessage("You can not observe games while registered on an event."); return false; } else diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java index a3c74220a9..3afbd5674c 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; @@ -266,11 +265,7 @@ public class TrainingCamp extends AbstractNpcAI { return false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. { return false; } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 64b03b6011..fe12cb8e73 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -147,7 +147,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -172,13 +172,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -227,7 +227,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -264,6 +264,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -454,7 +455,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -481,7 +482,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -534,7 +535,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -581,7 +582,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -608,7 +609,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -639,7 +640,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -726,7 +727,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -778,7 +779,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -883,7 +884,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/MasterHandler.java index 5ee9ecb5d7..bf5e891fec 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -144,7 +143,6 @@ import handlers.bypasshandlers.ChangePlayerName; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -411,7 +409,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -481,7 +478,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java index 95af1dea6b..f075754123 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java @@ -99,7 +99,7 @@ public class SkillConditionMasterHandler SkillConditionHandler.getInstance().registerHandler("OpNeedSummonOrPet", OpNeedSummonOrPetSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotAffectedBySkill", OpNotAffectedBySkillSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotCursed", OpNotCursedSkillCondition::new); - SkillConditionHandler.getInstance().registerHandler("OpNotInCeremonyOfChaos", OpNotInCeremonyOfChaosSkillCondition::new); + SkillConditionHandler.getInstance().registerHandler("OpNotInEvent", OpNotInEventSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInPeacezone", OpNotInPeacezoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInstantzone", OpNotInstantzoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotOlympiad", OpNotOlympiadSkillCondition::new); diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/bypasshandlers/Observation.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/bypasshandlers/Observation.java index 46a386ddd4..a7bde42217 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/bypasshandlers/Observation.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/bypasshandlers/Observation.java @@ -99,9 +99,9 @@ public class Observation implements IBypassHandler player.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_SIEGE_WITH_A_PET_OR_SERVITOR_SUMMONED); return false; } - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("Cannot use while current Event"); + player.sendMessage("Cannot use while registered on an event."); return false; } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java similarity index 80% rename from L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java rename to L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java index b5cefc61cc..8b23f3b8b5 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java @@ -19,22 +19,21 @@ package handlers.skillconditionhandlers; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.ISkillCondition; import org.l2jmobius.gameserver.model.skills.Skill; /** * @author Mobius */ -public class OpNotInCeremonyOfChaosSkillCondition implements ISkillCondition +public class OpNotInEventSkillCondition implements ISkillCondition { - public OpNotInCeremonyOfChaosSkillCondition(StatSet params) + public OpNotInEventSkillCondition(StatSet params) { } @Override public boolean canUse(Creature caster, Skill skill, WorldObject target) { - return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)); + return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent()); } } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index dd5edc672a..92ef49a349 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -80,7 +80,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index c7e56162c7..ae271764f0 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -80,7 +80,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java index 6ef0fa1dfd..ab21b5df1b 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java @@ -162,7 +162,7 @@ public class Q10813_ForGlory extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java index 86ea55caf9..0ea6ef37e1 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java @@ -169,7 +169,7 @@ public class Q10819_ForHonor extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/00000-00099.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/00000-00099.xml index d5f8ced8f0..9f10cb6efc 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/00000-00099.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/00000-00099.xml @@ -1159,7 +1159,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/00700-00799.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/00700-00799.xml index 4ab3bcdd10..26338a1796 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/00700-00799.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/00700-00799.xml @@ -393,7 +393,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -436,7 +436,7 @@ - + @@ -452,7 +452,7 @@ - + @@ -491,7 +491,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -537,7 +537,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -615,7 +615,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/00900-00999.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/00900-00999.xml index 8bbc2e27d6..642b1c5816 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/00900-00999.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/00900-00999.xml @@ -728,7 +728,7 @@ - + @@ -746,7 +746,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -788,7 +788,7 @@ - + @@ -806,7 +806,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -833,7 +833,7 @@ - + @@ -848,7 +848,7 @@ - + @@ -866,7 +866,7 @@ - + @@ -881,7 +881,7 @@ - + @@ -893,7 +893,7 @@ - + @@ -908,7 +908,7 @@ - + @@ -926,7 +926,7 @@ - + @@ -941,7 +941,7 @@ - + @@ -953,7 +953,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/01000-01099.xml index 376059b37f..fc841aa214 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/01000-01099.xml @@ -700,7 +700,7 @@ - + @@ -723,7 +723,7 @@ - + @@ -881,7 +881,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/01500-01599.xml index 8888cc8475..c4d8cb861a 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/05200-05299.xml index 925ff562c3..a9bcee9133 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/05200-05299.xml @@ -488,7 +488,7 @@ - + @@ -509,7 +509,7 @@ - + @@ -530,7 +530,7 @@ - + @@ -551,7 +551,7 @@ - + @@ -572,7 +572,7 @@ - + @@ -593,7 +593,7 @@ - + @@ -614,7 +614,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -656,7 +656,7 @@ - + @@ -677,7 +677,7 @@ - + @@ -698,7 +698,7 @@ - + @@ -719,7 +719,7 @@ - + @@ -740,7 +740,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -782,7 +782,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/05500-05599.xml index 3eb8c37aaf..9eb2b65043 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/05500-05599.xml @@ -1079,7 +1079,7 @@ - + @@ -1098,7 +1098,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/06400-06499.xml index 8ef613c844..6515069390 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -135,7 +135,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08100-08199.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08100-08199.xml index dbafd283b3..e020ccd2fe 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08100-08199.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08100-08199.xml @@ -2125,7 +2125,7 @@ - + @@ -2142,7 +2142,7 @@ - + @@ -2159,7 +2159,7 @@ - + @@ -2176,7 +2176,7 @@ - + @@ -2193,7 +2193,7 @@ - + @@ -2210,7 +2210,7 @@ - + @@ -2227,7 +2227,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08200-08299.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08200-08299.xml index 6cc38a1670..7a75f6d934 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08200-08299.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08200-08299.xml @@ -12,7 +12,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08600-08699.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08600-08699.xml index 81c97902a7..17833c5c07 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08600-08699.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08600-08699.xml @@ -374,7 +374,7 @@ - + @@ -512,7 +512,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -998,7 +998,7 @@ - + @@ -1014,7 +1014,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1046,7 +1046,7 @@ - + @@ -1062,7 +1062,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1094,7 +1094,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1126,7 +1126,7 @@ - + @@ -1142,7 +1142,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1174,7 +1174,7 @@ - + @@ -1190,7 +1190,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08700-08799.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08700-08799.xml index 84d81a4b37..5c70280280 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08700-08799.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/08700-08799.xml @@ -1104,7 +1104,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/09200-09299.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/09200-09299.xml index 4798a0c5e1..a2a47efb81 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/09200-09299.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/09200-09299.xml @@ -116,7 +116,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/09700-09799.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/09700-09799.xml index d2a62b73c7..f13f9c2df8 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/09700-09799.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/09700-09799.xml @@ -46,7 +46,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/10100-10199.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/10100-10199.xml index b72857a8ca..fdcf620c10 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/10100-10199.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/10100-10199.xml @@ -1118,7 +1118,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/13000-13099.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/13000-13099.xml index 9d3ea6de89..19dbfcfeff 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/13000-13099.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/13000-13099.xml @@ -516,7 +516,7 @@ - + @@ -936,7 +936,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/13700-13799.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/13700-13799.xml index 7736498d85..fb0f27ccee 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/13700-13799.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/13700-13799.xml @@ -820,7 +820,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/14600-14699.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/14600-14699.xml index f7b7a38d3e..53e1f3568c 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/14600-14699.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/14600-14699.xml @@ -1802,7 +1802,7 @@ - + @@ -1935,7 +1935,7 @@ - + @@ -2051,7 +2051,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/14700-14799.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/14700-14799.xml index 7a2470d9a5..6dccf6872c 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/14700-14799.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/14700-14799.xml @@ -13,7 +13,7 @@ - + @@ -35,7 +35,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/17000-17099.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/17000-17099.xml index e4db24ccca..23ee5675ea 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/17000-17099.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/17000-17099.xml @@ -97,7 +97,7 @@ - + @@ -352,7 +352,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/20300-20399.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/20300-20399.xml index ef0b89cf97..050b1ff7b0 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/20300-20399.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/20300-20399.xml @@ -988,7 +988,7 @@ - + @@ -1104,7 +1104,7 @@ - + @@ -1220,7 +1220,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/21000-21099.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/21000-21099.xml index d6fb37f7f8..c828247562 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/21000-21099.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/21000-21099.xml @@ -686,7 +686,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -786,7 +786,7 @@ - + @@ -808,7 +808,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/21100-21199.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/21100-21199.xml index 353014adc4..d9f9c4906a 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/21100-21199.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/21100-21199.xml @@ -1575,7 +1575,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/21200-21299.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/21200-21299.xml index 57dd45dbc8..bfc7a6f496 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/21200-21299.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/21200-21299.xml @@ -203,7 +203,7 @@ - + @@ -793,7 +793,7 @@ - + @@ -812,7 +812,7 @@ - + @@ -861,7 +861,7 @@ - + @@ -880,7 +880,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/22000-22099.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/22000-22099.xml index f31bc26203..643896e06b 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/22000-22099.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/22000-22099.xml @@ -449,7 +449,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -737,7 +737,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/22500-22599.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/22500-22599.xml index 11efd9599e..3f5dc58143 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/22500-22599.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/22500-22599.xml @@ -1030,7 +1030,7 @@ - + @@ -1050,7 +1050,7 @@ - + @@ -1070,7 +1070,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/22600-22699.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/22600-22699.xml index 609260e195..445d53ef3e 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/22600-22699.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/22600-22699.xml @@ -432,7 +432,7 @@ - + @@ -455,7 +455,7 @@ - + @@ -478,7 +478,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23200-23299.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23200-23299.xml index e9263dc4e4..0a070c322a 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23200-23299.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23200-23299.xml @@ -163,7 +163,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -525,7 +525,7 @@ - + @@ -560,7 +560,7 @@ - + @@ -575,7 +575,7 @@ - + @@ -588,7 +588,7 @@ - + @@ -606,7 +606,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23300-23399.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23300-23399.xml index 8d929f470d..354303b6b6 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23300-23399.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23300-23399.xml @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23400-23499.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23400-23499.xml index 10b8102445..1bece4192b 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23400-23499.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23400-23499.xml @@ -1092,7 +1092,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1164,7 +1164,7 @@ - + @@ -1426,7 +1426,7 @@ - + @@ -1443,7 +1443,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23500-23599.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23500-23599.xml index e548f3cf94..80ac77ad4f 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23500-23599.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23500-23599.xml @@ -93,7 +93,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23600-23699.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23600-23699.xml index 56e3bf15c5..8e91aeeadf 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23600-23699.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/23600-23699.xml @@ -189,7 +189,7 @@ - + @@ -566,7 +566,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/30300-30399.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/30300-30399.xml index 89b884947d..d6e4f92ffc 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/30300-30399.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/30300-30399.xml @@ -984,7 +984,7 @@ - + @@ -1008,7 +1008,7 @@ - + @@ -1032,7 +1032,7 @@ - + @@ -1052,7 +1052,7 @@ - + @@ -1075,7 +1075,7 @@ - + @@ -1098,7 +1098,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/34000-34099.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/34000-34099.xml index ee27bbbd26..f682a220b1 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/34000-34099.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/34000-34099.xml @@ -180,7 +180,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -220,7 +220,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/34600-34699.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/34600-34699.xml index 2db734d507..37cf5939f0 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/34600-34699.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/34600-34699.xml @@ -41,7 +41,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/35600-35699.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/35600-35699.xml index b8e80e367d..a3b0cc12ec 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/35600-35699.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/35600-35699.xml @@ -1423,7 +1423,7 @@ - + @@ -1443,7 +1443,7 @@ - + @@ -1463,7 +1463,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/35700-35799.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/35700-35799.xml index 2a7159ad08..50f1f52823 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/35700-35799.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/35700-35799.xml @@ -771,7 +771,7 @@ - + @@ -791,7 +791,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/35900-35999.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/35900-35999.xml index 4599219b20..f7e143e540 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/35900-35999.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/35900-35999.xml @@ -475,7 +475,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/36000-36099.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/36000-36099.xml index c6a7e53df0..48c814a332 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/36000-36099.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/36000-36099.xml @@ -377,7 +377,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/36200-36299.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/36200-36299.xml index 9159c160e1..d3ec72e4bc 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/36200-36299.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/36200-36299.xml @@ -791,7 +791,7 @@ - + @@ -1079,7 +1079,7 @@ - + @@ -1096,7 +1096,7 @@ - + @@ -1113,7 +1113,7 @@ - + @@ -1130,7 +1130,7 @@ - + @@ -1146,7 +1146,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1210,7 +1210,7 @@ - + @@ -1247,7 +1247,7 @@ - + @@ -1265,7 +1265,7 @@ - + @@ -1283,7 +1283,7 @@ - + @@ -1301,7 +1301,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/36300-36399.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/36300-36399.xml index f15411962f..10fdcf788b 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/36300-36399.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/36300-36399.xml @@ -48,7 +48,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -80,7 +80,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -119,7 +119,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/37600-37699.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/37600-37699.xml index ec6483f561..41e8be4507 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/37600-37699.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/37600-37699.xml @@ -1395,7 +1395,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/38200-38299.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/38200-38299.xml index d4caf4abd1..b3f2b11bf6 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/38200-38299.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/38200-38299.xml @@ -359,7 +359,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -393,7 +393,7 @@ - + @@ -410,7 +410,7 @@ - + @@ -427,7 +427,7 @@ - + @@ -444,7 +444,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/40000-40099.xml b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/40000-40099.xml index aedfc42d7d..5d1495a3d7 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/40000-40099.xml +++ b/L2J_Mobius_02.5_Underground/dist/game/data/stats/items/40000-40099.xml @@ -870,7 +870,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/xsd/items.xsd b/L2J_Mobius_02.5_Underground/dist/game/data/xsd/items.xsd index f3bfdc3cc8..328252c40f 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_02.5_Underground/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_02.5_Underground/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_02.5_Underground/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_02.5_Underground/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_02.5_Underground/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_02.5_Underground/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_02.5_Underground/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/GameServer.java index 30820c00a1..4ceda120f3 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/GameServer.java @@ -70,7 +70,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemHPBonusData; import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -389,8 +388,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/Shutdown.java index 9e0bc3126c..02419a263c 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/Shutdown.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.BotReportTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -452,8 +451,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 21e1b9fe11..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_6_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANT_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); - resetDailyMissionRewards(); resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); - onResetAttendanceRewards(); + resetDailyMissionRewards(); + resetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -83,8 +103,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -102,8 +121,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -150,12 +210,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -260,7 +319,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 4f663f1e96..4835e884e6 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java index 1c96c824c0..2c3916a99c 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5037,15 +5037,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Summon.java index 919cda941e..6115effc29 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 0cf2945bb9..f2c22929e2 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -127,7 +127,6 @@ import org.l2jmobius.gameserver.instancemanager.RecipeManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -182,7 +181,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -190,7 +188,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -217,7 +214,6 @@ import org.l2jmobius.gameserver.model.fishing.Fishing; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -694,10 +690,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -724,7 +716,9 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnSoloEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -847,7 +841,7 @@ public class PlayerInstance extends Playable // Shared dualclass skills. private static final String KNOWN_DUAL_SKILLS_VAR = "KNOWN_DUAL_SKILLS"; - private static final int[] DUAL_CLASS_SKILLS = new int[] + private static final int[] DUAL_CLASS_SKILLS = { 19222, // Dignity of the Exalted 19223, // Belief of the Exalted @@ -2929,11 +2923,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4869,10 +4859,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5036,7 +5022,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5362,7 +5348,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8123,7 +8109,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8184,22 +8170,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return isOnSoloEvent() || (getTeam() != attacker.getTeam()); } // Check if the attacker is a Playable @@ -9374,12 +9351,7 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) - { - _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; - return false; - } - if (isOnEvent()) // custom event message + if (_inOlympiadMode || isRegisteredOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11177,12 +11149,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -13050,16 +13016,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13157,21 +13113,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13231,13 +13172,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13251,66 +13185,50 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; + } + + public boolean isOnSoloEvent() + { + return _isOnSoloEvent; + } + + public void setOnSoloEvent(boolean value) + { + _isOnSoloEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13869,63 +13787,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index dc9069975f..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,702 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.enums.QuestSound; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.quest.QuestState; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - - // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player == null) - { - continue; - } - final QuestState qs = player.getQuestState("Q10813_ForGlory"); - final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); - if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId()) >= Config.EXALTED_FOR_GLORY_ITEM_MAX.getCount()) - { - qs.setCond(2, true); - } - } - else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId()) >= Config.EXALTED_FOR_HONOR_ITEM_MAX.getCount()) - { - qs1.setCond(2, true); - } - } - } - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 0b10e75f59..94eee3bae6 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java index fb0f2bb3da..06efad6874 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java @@ -18,7 +18,7 @@ package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; import java.util.List; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; @@ -27,21 +27,21 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; */ public class OnCeremonyOfChaosMatchResult implements IBaseEvent { - private final List _winners; - private final List _members; + private final List _winners; + private final List _members; - public OnCeremonyOfChaosMatchResult(List winners, List members) + public OnCeremonyOfChaosMatchResult(List winners, List members) { _winners = winners; _members = members; } - public List getWinners() + public List getWinners() { return _winners; } - public List getMembers() + public List getMembers() { return _members; } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index b323a33915..29cce0c911 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANT_ZONE); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/items/Item.java index 5556524f8d..4e8384244c 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -146,7 +145,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -219,7 +218,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -854,9 +853,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -931,11 +930,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index d53afe3ce4..ac412d89e7 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -248,9 +248,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 77fb41d2bb..d4cc53c0de 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 503e8f27a3..0fa0ad38db 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -45,7 +45,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -424,11 +423,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 39e28b4a7e..a1b584e066 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; /** @@ -84,14 +82,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index b0676e562d..c2cb56b495 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java index 5f6990c049..bde65a551d 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillTreeData; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -95,12 +94,12 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket player.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java index 50cf3b4c31..be086e8564 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java @@ -21,7 +21,6 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AbilityPointsData; import org.l2jmobius.gameserver.enums.UserInfoType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -66,12 +65,13 @@ public class RequestChangeAbilityPoint implements IClientIncomingPacket return; } - if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + + if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java index af8e05729c..86a57b5952 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java @@ -23,7 +23,6 @@ import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.enums.SkillFinishType; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -64,12 +63,12 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket client.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { client.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java index ce871f6a18..88a7ec13b1 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,15 +42,15 @@ public class RequestCancelCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } + // if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); + // player.sendPacket(ExCuriousHouseState.IDLE_PACKET); + // + // if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) + // { + // player.prohibiteCeremonyOfChaos(); + // } + // } } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java index a4e6f04627..c9e0872ac9 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; /** * @author Sdw @@ -46,21 +42,21 @@ public class RequestCuriousHouseHtml implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) + // { + // final NpcHtmlMessage message = new NpcHtmlMessage(0); + // message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); + // player.sendPacket(message); + // } } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java index 33ca3d7b33..9fd38f3805 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,25 +42,25 @@ public class RequestJoinCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); + // player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); + // player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); + // } + // else + // { + // player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); + // } } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index e2a0890651..57c7bafe10 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed packet.writeD(_z); // Confirmed @@ -264,7 +260,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java index d26eee8d89..7c74a35616 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java @@ -20,7 +20,6 @@ import java.util.Collection; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -31,9 +30,9 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket { private final int _id; private final int _maxPlayers; - private final Collection _players; + private final Collection _players; - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) + public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) { _id = id; _maxPlayers = maxPlayers; @@ -48,25 +47,14 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket packet.writeD(_id); packet.writeD(_maxPlayers); packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) + for (PlayerInstance player : _players) { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getMaxHp()); + packet.writeD(player.getMaxCp()); + packet.writeD((int) player.getCurrentHp()); + packet.writeD((int) player.getCurrentCp()); } return true; } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java index 1f09c4de0d..27605b732b 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java @@ -16,10 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; +import java.util.Collection; + import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -29,30 +30,30 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; public class ExCuriousHouseResult implements IClientOutgoingPacket { private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; + private final Collection _players; - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) + public ExCuriousHouseResult(CeremonyOfChaosResult result, Collection players) { _result = result; - _event = event; + _players = players; } @Override public boolean write(PacketWriter packet) { OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); + packet.writeD(0); // _event.getId() packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> + packet.writeD(_players.size()); // CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + packet.writeD(_players.size()); + for (PlayerInstance player : _players) { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getClassId().getId()); + packet.writeD(0x00); // getLifeTime + packet.writeD(0x00); // getScore + } return true; } } diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_03.0_Helios/.classpath b/L2J_Mobius_03.0_Helios/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_03.0_Helios/.classpath +++ b/L2J_Mobius_03.0_Helios/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_03.0_Helios/dist/game/config/AdminCommands.xml b/L2J_Mobius_03.0_Helios/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/events/CeremonyOfChaos.xml b/L2J_Mobius_03.0_Helios/dist/game/data/events/CeremonyOfChaos.xml deleted file mode 100644 index 7331135977..0000000000 --- a/L2J_Mobius_03.0_Helios/dist/game/data/events/CeremonyOfChaos.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - 224 - 225 - 226 - 227 - - - - - - - Ceremony of Chaos has ended. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - start - end - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_03.0_Helios/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_03.0_Helios/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_03.0_Helios/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index 087cf3ce1a..0000000000 --- a/L2J_Mobius_03.0_Helios/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/events/Elpies.txt b/L2J_Mobius_03.0_Helios/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_03.0_Helios/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/events/Rabbits.txt b/L2J_Mobius_03.0_Helios/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_03.0_Helios/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/events/Race.txt b/L2J_Mobius_03.0_Helios/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_03.0_Helios/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_03.0_Helios/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_03.0_Helios/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_03.0_Helios/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_03.0_Helios/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_03.0_Helios/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_03.0_Helios/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index eaf1654a53..5aa0dcadd7 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -155,7 +155,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -190,7 +190,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -248,7 +248,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -298,7 +298,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java index 92f5f478a9..848e1d690e 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java @@ -19,7 +19,6 @@ package ai.others.LaVieEnRose; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -128,13 +127,7 @@ public class LaVieEnRose extends AbstractNpcAI return false; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_USE_THE_BEAUTY_SHOP_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - return false; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot use the Beauty Shop while registered in an event."); return false; diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java index b8821136b1..f128e32650 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java @@ -336,9 +336,9 @@ public class OlyManager extends AbstractNpcAI implements IBypassHandler player.sendPacket(SystemMessageId.THE_OLYMPIAD_GAMES_ARE_NOT_CURRENTLY_IN_PROGRESS); return false; } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { - player.sendMessage("You can not observe games while registered on an event"); + player.sendMessage("You can not observe games while registered on an event."); return false; } else diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java index a3c74220a9..3afbd5674c 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; @@ -266,11 +265,7 @@ public class TrainingCamp extends AbstractNpcAI { return false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. { return false; } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 64b03b6011..fe12cb8e73 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -147,7 +147,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -172,13 +172,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -227,7 +227,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -264,6 +264,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -454,7 +455,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -481,7 +482,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -534,7 +535,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -581,7 +582,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -608,7 +609,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -639,7 +640,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -726,7 +727,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -778,7 +779,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -883,7 +884,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/MasterHandler.java index 55bad5a1b8..c8d35a96df 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -144,7 +143,6 @@ import handlers.bypasshandlers.ChangePlayerName; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -412,7 +410,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -482,7 +479,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java index 95af1dea6b..f075754123 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java @@ -99,7 +99,7 @@ public class SkillConditionMasterHandler SkillConditionHandler.getInstance().registerHandler("OpNeedSummonOrPet", OpNeedSummonOrPetSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotAffectedBySkill", OpNotAffectedBySkillSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotCursed", OpNotCursedSkillCondition::new); - SkillConditionHandler.getInstance().registerHandler("OpNotInCeremonyOfChaos", OpNotInCeremonyOfChaosSkillCondition::new); + SkillConditionHandler.getInstance().registerHandler("OpNotInEvent", OpNotInEventSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInPeacezone", OpNotInPeacezoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInstantzone", OpNotInstantzoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotOlympiad", OpNotOlympiadSkillCondition::new); diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/bypasshandlers/Observation.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/bypasshandlers/Observation.java index 46a386ddd4..a7bde42217 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/bypasshandlers/Observation.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/bypasshandlers/Observation.java @@ -99,9 +99,9 @@ public class Observation implements IBypassHandler player.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_SIEGE_WITH_A_PET_OR_SERVITOR_SUMMONED); return false; } - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("Cannot use while current Event"); + player.sendMessage("Cannot use while registered on an event."); return false; } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java similarity index 80% rename from L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java rename to L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java index b5cefc61cc..8b23f3b8b5 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java @@ -19,22 +19,21 @@ package handlers.skillconditionhandlers; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.ISkillCondition; import org.l2jmobius.gameserver.model.skills.Skill; /** * @author Mobius */ -public class OpNotInCeremonyOfChaosSkillCondition implements ISkillCondition +public class OpNotInEventSkillCondition implements ISkillCondition { - public OpNotInCeremonyOfChaosSkillCondition(StatSet params) + public OpNotInEventSkillCondition(StatSet params) { } @Override public boolean canUse(Creature caster, Skill skill, WorldObject target) { - return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)); + return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent()); } } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index dd5edc672a..92ef49a349 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -80,7 +80,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index c7e56162c7..ae271764f0 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -80,7 +80,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java index 6ef0fa1dfd..ab21b5df1b 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java @@ -162,7 +162,7 @@ public class Q10813_ForGlory extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java index 86ea55caf9..0ea6ef37e1 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java @@ -169,7 +169,7 @@ public class Q10819_ForHonor extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/00000-00099.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/00000-00099.xml index 9b6382000a..0e83149490 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/00000-00099.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/00000-00099.xml @@ -1155,7 +1155,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/00700-00799.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/00700-00799.xml index d5fcaa3c01..c69804de98 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/00700-00799.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/00700-00799.xml @@ -393,7 +393,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -436,7 +436,7 @@ - + @@ -452,7 +452,7 @@ - + @@ -491,7 +491,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -537,7 +537,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -615,7 +615,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/00900-00999.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/00900-00999.xml index 9185da4a58..44303e5466 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/00900-00999.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/00900-00999.xml @@ -728,7 +728,7 @@ - + @@ -746,7 +746,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -788,7 +788,7 @@ - + @@ -806,7 +806,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -833,7 +833,7 @@ - + @@ -848,7 +848,7 @@ - + @@ -866,7 +866,7 @@ - + @@ -881,7 +881,7 @@ - + @@ -893,7 +893,7 @@ - + @@ -908,7 +908,7 @@ - + @@ -926,7 +926,7 @@ - + @@ -941,7 +941,7 @@ - + @@ -953,7 +953,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/01000-01099.xml index 376059b37f..fc841aa214 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/01000-01099.xml @@ -700,7 +700,7 @@ - + @@ -723,7 +723,7 @@ - + @@ -881,7 +881,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/01500-01599.xml index bd961bd01a..eed73af47f 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/05200-05299.xml index 4de3e20660..d1dbc0b663 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/05200-05299.xml @@ -486,7 +486,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -528,7 +528,7 @@ - + @@ -549,7 +549,7 @@ - + @@ -570,7 +570,7 @@ - + @@ -591,7 +591,7 @@ - + @@ -612,7 +612,7 @@ - + @@ -633,7 +633,7 @@ - + @@ -654,7 +654,7 @@ - + @@ -675,7 +675,7 @@ - + @@ -696,7 +696,7 @@ - + @@ -717,7 +717,7 @@ - + @@ -738,7 +738,7 @@ - + @@ -759,7 +759,7 @@ - + @@ -780,7 +780,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/05500-05599.xml index 38be5d2648..606bc10f08 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/05500-05599.xml @@ -1088,7 +1088,7 @@ - + @@ -1107,7 +1107,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/06400-06499.xml index 8ef613c844..6515069390 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -135,7 +135,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08100-08199.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08100-08199.xml index 6da08cd14f..6508c59b77 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08100-08199.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08100-08199.xml @@ -2125,7 +2125,7 @@ - + @@ -2142,7 +2142,7 @@ - + @@ -2159,7 +2159,7 @@ - + @@ -2176,7 +2176,7 @@ - + @@ -2193,7 +2193,7 @@ - + @@ -2210,7 +2210,7 @@ - + @@ -2227,7 +2227,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08200-08299.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08200-08299.xml index ccb00473a9..1f9379aa9b 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08200-08299.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08200-08299.xml @@ -12,7 +12,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08600-08699.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08600-08699.xml index 81c97902a7..17833c5c07 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08600-08699.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08600-08699.xml @@ -374,7 +374,7 @@ - + @@ -512,7 +512,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -998,7 +998,7 @@ - + @@ -1014,7 +1014,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1046,7 +1046,7 @@ - + @@ -1062,7 +1062,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1094,7 +1094,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1126,7 +1126,7 @@ - + @@ -1142,7 +1142,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1174,7 +1174,7 @@ - + @@ -1190,7 +1190,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08700-08799.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08700-08799.xml index 84d81a4b37..5c70280280 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08700-08799.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/08700-08799.xml @@ -1104,7 +1104,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/09200-09299.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/09200-09299.xml index 2f724c0c7a..c58c5a911b 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/09200-09299.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/09200-09299.xml @@ -116,7 +116,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/09700-09799.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/09700-09799.xml index d2a62b73c7..f13f9c2df8 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/09700-09799.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/09700-09799.xml @@ -46,7 +46,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/10100-10199.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/10100-10199.xml index b72857a8ca..fdcf620c10 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/10100-10199.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/10100-10199.xml @@ -1118,7 +1118,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/13000-13099.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/13000-13099.xml index 9d3ea6de89..19dbfcfeff 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/13000-13099.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/13000-13099.xml @@ -516,7 +516,7 @@ - + @@ -936,7 +936,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/13700-13799.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/13700-13799.xml index 7736498d85..fb0f27ccee 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/13700-13799.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/13700-13799.xml @@ -820,7 +820,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/14600-14699.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/14600-14699.xml index f7b7a38d3e..53e1f3568c 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/14600-14699.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/14600-14699.xml @@ -1802,7 +1802,7 @@ - + @@ -1935,7 +1935,7 @@ - + @@ -2051,7 +2051,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/14700-14799.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/14700-14799.xml index 2c1f5466fa..8060013272 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/14700-14799.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/14700-14799.xml @@ -13,7 +13,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/17000-17099.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/17000-17099.xml index 429c42d589..a6a967557c 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/17000-17099.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/17000-17099.xml @@ -97,7 +97,7 @@ - + @@ -352,7 +352,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/20300-20399.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/20300-20399.xml index ef0b89cf97..050b1ff7b0 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/20300-20399.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/20300-20399.xml @@ -988,7 +988,7 @@ - + @@ -1104,7 +1104,7 @@ - + @@ -1220,7 +1220,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/21000-21099.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/21000-21099.xml index d6fb37f7f8..c828247562 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/21000-21099.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/21000-21099.xml @@ -686,7 +686,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -786,7 +786,7 @@ - + @@ -808,7 +808,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/21100-21199.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/21100-21199.xml index 72a78fab86..bea690228d 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/21100-21199.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/21100-21199.xml @@ -1575,7 +1575,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/21200-21299.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/21200-21299.xml index effdd209ee..bd025d4d6a 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/21200-21299.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/21200-21299.xml @@ -207,7 +207,7 @@ - + @@ -802,7 +802,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -870,7 +870,7 @@ - + @@ -889,7 +889,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/22000-22099.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/22000-22099.xml index f31bc26203..643896e06b 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/22000-22099.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/22000-22099.xml @@ -449,7 +449,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -737,7 +737,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/22500-22599.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/22500-22599.xml index e6f61c6109..fbfe230224 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/22500-22599.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/22500-22599.xml @@ -1030,7 +1030,7 @@ - + @@ -1050,7 +1050,7 @@ - + @@ -1070,7 +1070,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/22600-22699.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/22600-22699.xml index 0b2f9a0695..6a8f0a2b85 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/22600-22699.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/22600-22699.xml @@ -432,7 +432,7 @@ - + @@ -455,7 +455,7 @@ - + @@ -478,7 +478,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23200-23299.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23200-23299.xml index e9263dc4e4..0a070c322a 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23200-23299.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23200-23299.xml @@ -163,7 +163,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -525,7 +525,7 @@ - + @@ -560,7 +560,7 @@ - + @@ -575,7 +575,7 @@ - + @@ -588,7 +588,7 @@ - + @@ -606,7 +606,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23300-23399.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23300-23399.xml index 90d05eb867..3a5cd6a001 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23300-23399.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23300-23399.xml @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23400-23499.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23400-23499.xml index 10b8102445..1bece4192b 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23400-23499.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23400-23499.xml @@ -1092,7 +1092,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1164,7 +1164,7 @@ - + @@ -1426,7 +1426,7 @@ - + @@ -1443,7 +1443,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23500-23599.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23500-23599.xml index 68ae350e6c..d97d50f712 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23500-23599.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23500-23599.xml @@ -93,7 +93,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23600-23699.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23600-23699.xml index 4123057f5b..a19495ecbe 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23600-23699.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/23600-23699.xml @@ -189,7 +189,7 @@ - + @@ -566,7 +566,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/30300-30399.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/30300-30399.xml index 89b884947d..d6e4f92ffc 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/30300-30399.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/30300-30399.xml @@ -984,7 +984,7 @@ - + @@ -1008,7 +1008,7 @@ - + @@ -1032,7 +1032,7 @@ - + @@ -1052,7 +1052,7 @@ - + @@ -1075,7 +1075,7 @@ - + @@ -1098,7 +1098,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/34000-34099.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/34000-34099.xml index ceed0e9937..3051ae7c92 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/34000-34099.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/34000-34099.xml @@ -180,7 +180,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -220,7 +220,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/34600-34699.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/34600-34699.xml index 4ca26b3542..3eb52d5ccf 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/34600-34699.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/34600-34699.xml @@ -41,7 +41,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/35600-35699.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/35600-35699.xml index 7d6c22c676..5762e0f511 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/35600-35699.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/35600-35699.xml @@ -1423,7 +1423,7 @@ - + @@ -1443,7 +1443,7 @@ - + @@ -1463,7 +1463,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/35700-35799.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/35700-35799.xml index 5a6ccb1c3d..263346df37 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/35700-35799.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/35700-35799.xml @@ -771,7 +771,7 @@ - + @@ -791,7 +791,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/35900-35999.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/35900-35999.xml index 78799915a6..2dd95aa9da 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/35900-35999.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/35900-35999.xml @@ -475,7 +475,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/36000-36099.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/36000-36099.xml index 6006920c6e..da5462dd68 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/36000-36099.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/36000-36099.xml @@ -377,7 +377,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/36200-36299.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/36200-36299.xml index 0681ca8078..f2eb0f7834 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/36200-36299.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/36200-36299.xml @@ -791,7 +791,7 @@ - + @@ -1079,7 +1079,7 @@ - + @@ -1096,7 +1096,7 @@ - + @@ -1113,7 +1113,7 @@ - + @@ -1130,7 +1130,7 @@ - + @@ -1146,7 +1146,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1210,7 +1210,7 @@ - + @@ -1247,7 +1247,7 @@ - + @@ -1265,7 +1265,7 @@ - + @@ -1283,7 +1283,7 @@ - + @@ -1301,7 +1301,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/36300-36399.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/36300-36399.xml index 0c51781dd9..93a6f0ce7a 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/36300-36399.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/36300-36399.xml @@ -48,7 +48,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -80,7 +80,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -119,7 +119,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/37600-37699.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/37600-37699.xml index 10fa3457d0..9275d43421 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/37600-37699.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/37600-37699.xml @@ -1395,7 +1395,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/38200-38299.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/38200-38299.xml index 6c9f579018..e8b55db4d0 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/38200-38299.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/38200-38299.xml @@ -359,7 +359,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -393,7 +393,7 @@ - + @@ -410,7 +410,7 @@ - + @@ -427,7 +427,7 @@ - + @@ -444,7 +444,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/40000-40099.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/40000-40099.xml index 30b6cd2735..6eb3337173 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/40000-40099.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/40000-40099.xml @@ -870,7 +870,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47300-47399.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47300-47399.xml index bb85d6a0c3..a5c00ca8ab 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47300-47399.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47300-47399.xml @@ -1188,7 +1188,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47400-47499.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47400-47499.xml index 98d9215e2f..57d51c43ca 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47400-47499.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47400-47499.xml @@ -51,7 +51,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -442,7 +442,7 @@ - + @@ -473,7 +473,7 @@ - + @@ -502,7 +502,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47500-47599.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47500-47599.xml index 44cfac3ae8..7180a3c27c 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47500-47599.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47500-47599.xml @@ -539,7 +539,7 @@ - + @@ -552,7 +552,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47600-47699.xml b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47600-47699.xml index 4e9add0036..8e147caa08 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47600-47699.xml +++ b/L2J_Mobius_03.0_Helios/dist/game/data/stats/items/47600-47699.xml @@ -452,7 +452,7 @@ - + @@ -470,7 +470,7 @@ - + @@ -488,7 +488,7 @@ - + @@ -509,7 +509,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/xsd/items.xsd b/L2J_Mobius_03.0_Helios/dist/game/data/xsd/items.xsd index f3bfdc3cc8..328252c40f 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_03.0_Helios/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_03.0_Helios/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_03.0_Helios/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_03.0_Helios/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_03.0_Helios/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_03.0_Helios/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_03.0_Helios/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/GameServer.java index 30820c00a1..4ceda120f3 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/GameServer.java @@ -70,7 +70,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemHPBonusData; import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -389,8 +388,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/Shutdown.java index 9e0bc3126c..02419a263c 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/Shutdown.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.BotReportTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -452,8 +451,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 21e1b9fe11..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_6_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANT_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); - resetDailyMissionRewards(); resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); - onResetAttendanceRewards(); + resetDailyMissionRewards(); + resetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -83,8 +103,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -102,8 +121,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -150,12 +210,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -260,7 +319,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 4f663f1e96..4835e884e6 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java index 3cc1d29bc5..2c8d3a34bc 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5037,15 +5037,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Summon.java index 919cda941e..6115effc29 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 6d5237505b..794d89b5de 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -128,7 +128,6 @@ import org.l2jmobius.gameserver.instancemanager.RecipeManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -183,7 +182,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -191,7 +189,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -218,7 +215,6 @@ import org.l2jmobius.gameserver.model.fishing.Fishing; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -696,10 +692,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -726,7 +718,9 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnSoloEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -849,7 +843,7 @@ public class PlayerInstance extends Playable // Shared dualclass skills. private static final String KNOWN_DUAL_SKILLS_VAR = "KNOWN_DUAL_SKILLS"; - private static final int[] DUAL_CLASS_SKILLS = new int[] + private static final int[] DUAL_CLASS_SKILLS = { 19222, // Dignity of the Exalted 19223, // Belief of the Exalted @@ -2931,11 +2925,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4871,10 +4861,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5038,7 +5024,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5364,7 +5350,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8125,7 +8111,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8186,22 +8172,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return isOnSoloEvent() || (getTeam() != attacker.getTeam()); } // Check if the attacker is a Playable @@ -9376,12 +9353,7 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) - { - _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; - return false; - } - if (isOnEvent()) // custom event message + if (_inOlympiadMode || isRegisteredOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11179,12 +11151,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -13052,16 +13018,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13160,21 +13116,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13234,13 +13175,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13254,66 +13188,50 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; + } + + public boolean isOnSoloEvent() + { + return _isOnSoloEvent; + } + + public void setOnSoloEvent(boolean value) + { + _isOnSoloEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13872,63 +13790,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index dc9069975f..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,702 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.enums.QuestSound; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.quest.QuestState; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - - // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player == null) - { - continue; - } - final QuestState qs = player.getQuestState("Q10813_ForGlory"); - final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); - if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId()) >= Config.EXALTED_FOR_GLORY_ITEM_MAX.getCount()) - { - qs.setCond(2, true); - } - } - else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId()) >= Config.EXALTED_FOR_HONOR_ITEM_MAX.getCount()) - { - qs1.setCond(2, true); - } - } - } - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 0b10e75f59..94eee3bae6 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java index fb0f2bb3da..06efad6874 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java @@ -18,7 +18,7 @@ package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; import java.util.List; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; @@ -27,21 +27,21 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; */ public class OnCeremonyOfChaosMatchResult implements IBaseEvent { - private final List _winners; - private final List _members; + private final List _winners; + private final List _members; - public OnCeremonyOfChaosMatchResult(List winners, List members) + public OnCeremonyOfChaosMatchResult(List winners, List members) { _winners = winners; _members = members; } - public List getWinners() + public List getWinners() { return _winners; } - public List getMembers() + public List getMembers() { return _members; } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index b323a33915..29cce0c911 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANT_ZONE); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/items/Item.java index 5556524f8d..4e8384244c 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -146,7 +145,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -219,7 +218,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -854,9 +853,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -931,11 +930,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index d53afe3ce4..ac412d89e7 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -248,9 +248,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 77fb41d2bb..d4cc53c0de 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 503e8f27a3..0fa0ad38db 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -45,7 +45,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -424,11 +423,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5154368eb9..4b61f82ce4 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java index 5f6990c049..bde65a551d 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillTreeData; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -95,12 +94,12 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket player.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java index 50cf3b4c31..be086e8564 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestChangeAbilityPoint.java @@ -21,7 +21,6 @@ import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.AbilityPointsData; import org.l2jmobius.gameserver.enums.UserInfoType; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -66,12 +65,13 @@ public class RequestChangeAbilityPoint implements IClientIncomingPacket return; } - if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + + if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java index af8e05729c..86a57b5952 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java @@ -23,7 +23,6 @@ import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.enums.SkillFinishType; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -64,12 +63,12 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket client.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { client.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java index ce871f6a18..88a7ec13b1 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,15 +42,15 @@ public class RequestCancelCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } + // if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); + // player.sendPacket(ExCuriousHouseState.IDLE_PACKET); + // + // if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) + // { + // player.prohibiteCeremonyOfChaos(); + // } + // } } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java index a4e6f04627..c9e0872ac9 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; /** * @author Sdw @@ -46,21 +42,21 @@ public class RequestCuriousHouseHtml implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) + // { + // final NpcHtmlMessage message = new NpcHtmlMessage(0); + // message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); + // player.sendPacket(message); + // } } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java index 33ca3d7b33..9fd38f3805 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,25 +42,25 @@ public class RequestJoinCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); + // player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); + // player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); + // } + // else + // { + // player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); + // } } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index e2a0890651..57c7bafe10 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed packet.writeD(_z); // Confirmed @@ -264,7 +260,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java index d26eee8d89..7c74a35616 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java @@ -20,7 +20,6 @@ import java.util.Collection; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -31,9 +30,9 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket { private final int _id; private final int _maxPlayers; - private final Collection _players; + private final Collection _players; - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) + public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) { _id = id; _maxPlayers = maxPlayers; @@ -48,25 +47,14 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket packet.writeD(_id); packet.writeD(_maxPlayers); packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) + for (PlayerInstance player : _players) { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getMaxHp()); + packet.writeD(player.getMaxCp()); + packet.writeD((int) player.getCurrentHp()); + packet.writeD((int) player.getCurrentCp()); } return true; } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java index 1f09c4de0d..27605b732b 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java @@ -16,10 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; +import java.util.Collection; + import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -29,30 +30,30 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; public class ExCuriousHouseResult implements IClientOutgoingPacket { private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; + private final Collection _players; - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) + public ExCuriousHouseResult(CeremonyOfChaosResult result, Collection players) { _result = result; - _event = event; + _players = players; } @Override public boolean write(PacketWriter packet) { OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); + packet.writeD(0); // _event.getId() packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> + packet.writeD(_players.size()); // CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + packet.writeD(_players.size()); + for (PlayerInstance player : _players) { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getClassId().getId()); + packet.writeD(0x00); // getLifeTime + packet.writeD(0x00); // getScore + } return true; } } diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_04.0_GrandCrusade/.classpath b/L2J_Mobius_04.0_GrandCrusade/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_04.0_GrandCrusade/.classpath +++ b/L2J_Mobius_04.0_GrandCrusade/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/config/AdminCommands.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/CeremonyOfChaos.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/CeremonyOfChaos.xml deleted file mode 100644 index 7331135977..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/CeremonyOfChaos.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - 224 - 225 - 226 - 227 - - - - - - - Ceremony of Chaos has ended. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - start - end - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index 087cf3ce1a..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/Elpies.txt b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/Rabbits.txt b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/Race.txt b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 99f259ebe2..bc5812b1d1 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -155,7 +155,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -190,7 +190,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -248,7 +248,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -298,7 +298,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java index 92f5f478a9..848e1d690e 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java @@ -19,7 +19,6 @@ package ai.others.LaVieEnRose; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -128,13 +127,7 @@ public class LaVieEnRose extends AbstractNpcAI return false; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_USE_THE_BEAUTY_SHOP_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - return false; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot use the Beauty Shop while registered in an event."); return false; diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java index e879012594..5eb992eefb 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java @@ -334,9 +334,9 @@ public class OlyManager extends AbstractNpcAI implements IBypassHandler player.sendPacket(SystemMessageId.THE_OLYMPIAD_GAMES_ARE_NOT_CURRENTLY_IN_PROGRESS); return false; } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { - player.sendMessage("You can not observe games while registered on an event"); + player.sendMessage("You can not observe games while registered on an event."); return false; } else diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java index a3c74220a9..3afbd5674c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; @@ -266,11 +265,7 @@ public class TrainingCamp extends AbstractNpcAI { return false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. { return false; } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 64b03b6011..fe12cb8e73 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -147,7 +147,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -172,13 +172,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -227,7 +227,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -264,6 +264,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -454,7 +455,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -481,7 +482,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -534,7 +535,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -581,7 +582,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -608,7 +609,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -639,7 +640,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -726,7 +727,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -778,7 +779,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -883,7 +884,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/MasterHandler.java index 55bad5a1b8..c8d35a96df 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -144,7 +143,6 @@ import handlers.bypasshandlers.ChangePlayerName; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -412,7 +410,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -482,7 +479,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java index 95af1dea6b..f075754123 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java @@ -99,7 +99,7 @@ public class SkillConditionMasterHandler SkillConditionHandler.getInstance().registerHandler("OpNeedSummonOrPet", OpNeedSummonOrPetSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotAffectedBySkill", OpNotAffectedBySkillSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotCursed", OpNotCursedSkillCondition::new); - SkillConditionHandler.getInstance().registerHandler("OpNotInCeremonyOfChaos", OpNotInCeremonyOfChaosSkillCondition::new); + SkillConditionHandler.getInstance().registerHandler("OpNotInEvent", OpNotInEventSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInPeacezone", OpNotInPeacezoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInstantzone", OpNotInstantzoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotOlympiad", OpNotOlympiadSkillCondition::new); diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/bypasshandlers/Observation.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/bypasshandlers/Observation.java index 46a386ddd4..a7bde42217 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/bypasshandlers/Observation.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/bypasshandlers/Observation.java @@ -99,9 +99,9 @@ public class Observation implements IBypassHandler player.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_SIEGE_WITH_A_PET_OR_SERVITOR_SUMMONED); return false; } - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("Cannot use while current Event"); + player.sendMessage("Cannot use while registered on an event."); return false; } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java similarity index 80% rename from L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java rename to L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java index b5cefc61cc..8b23f3b8b5 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java @@ -19,22 +19,21 @@ package handlers.skillconditionhandlers; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.ISkillCondition; import org.l2jmobius.gameserver.model.skills.Skill; /** * @author Mobius */ -public class OpNotInCeremonyOfChaosSkillCondition implements ISkillCondition +public class OpNotInEventSkillCondition implements ISkillCondition { - public OpNotInCeremonyOfChaosSkillCondition(StatSet params) + public OpNotInEventSkillCondition(StatSet params) { } @Override public boolean canUse(Creature caster, Skill skill, WorldObject target) { - return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)); + return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent()); } } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java index 6ef0fa1dfd..ab21b5df1b 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java @@ -162,7 +162,7 @@ public class Q10813_ForGlory extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java index 86ea55caf9..0ea6ef37e1 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java @@ -169,7 +169,7 @@ public class Q10819_ForHonor extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/00000-00099.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/00000-00099.xml index 9b6382000a..0e83149490 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/00000-00099.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/00000-00099.xml @@ -1155,7 +1155,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/00700-00799.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/00700-00799.xml index d5fcaa3c01..c69804de98 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/00700-00799.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/00700-00799.xml @@ -393,7 +393,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -436,7 +436,7 @@ - + @@ -452,7 +452,7 @@ - + @@ -491,7 +491,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -537,7 +537,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -615,7 +615,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/00900-00999.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/00900-00999.xml index 9185da4a58..44303e5466 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/00900-00999.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/00900-00999.xml @@ -728,7 +728,7 @@ - + @@ -746,7 +746,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -788,7 +788,7 @@ - + @@ -806,7 +806,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -833,7 +833,7 @@ - + @@ -848,7 +848,7 @@ - + @@ -866,7 +866,7 @@ - + @@ -881,7 +881,7 @@ - + @@ -893,7 +893,7 @@ - + @@ -908,7 +908,7 @@ - + @@ -926,7 +926,7 @@ - + @@ -941,7 +941,7 @@ - + @@ -953,7 +953,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/01000-01099.xml index 376059b37f..fc841aa214 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/01000-01099.xml @@ -700,7 +700,7 @@ - + @@ -723,7 +723,7 @@ - + @@ -881,7 +881,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/01500-01599.xml index bd961bd01a..eed73af47f 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/05200-05299.xml index 4de3e20660..d1dbc0b663 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/05200-05299.xml @@ -486,7 +486,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -528,7 +528,7 @@ - + @@ -549,7 +549,7 @@ - + @@ -570,7 +570,7 @@ - + @@ -591,7 +591,7 @@ - + @@ -612,7 +612,7 @@ - + @@ -633,7 +633,7 @@ - + @@ -654,7 +654,7 @@ - + @@ -675,7 +675,7 @@ - + @@ -696,7 +696,7 @@ - + @@ -717,7 +717,7 @@ - + @@ -738,7 +738,7 @@ - + @@ -759,7 +759,7 @@ - + @@ -780,7 +780,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/05500-05599.xml index 38be5d2648..606bc10f08 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/05500-05599.xml @@ -1088,7 +1088,7 @@ - + @@ -1107,7 +1107,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/06400-06499.xml index 8ef613c844..6515069390 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -135,7 +135,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08100-08199.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08100-08199.xml index 3a68a59b35..497af5648a 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08100-08199.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08100-08199.xml @@ -2125,7 +2125,7 @@ - + @@ -2142,7 +2142,7 @@ - + @@ -2159,7 +2159,7 @@ - + @@ -2176,7 +2176,7 @@ - + @@ -2193,7 +2193,7 @@ - + @@ -2210,7 +2210,7 @@ - + @@ -2227,7 +2227,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08200-08299.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08200-08299.xml index ccb00473a9..1f9379aa9b 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08200-08299.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08200-08299.xml @@ -12,7 +12,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08600-08699.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08600-08699.xml index 81c97902a7..17833c5c07 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08600-08699.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08600-08699.xml @@ -374,7 +374,7 @@ - + @@ -512,7 +512,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -998,7 +998,7 @@ - + @@ -1014,7 +1014,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1046,7 +1046,7 @@ - + @@ -1062,7 +1062,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1094,7 +1094,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1126,7 +1126,7 @@ - + @@ -1142,7 +1142,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1174,7 +1174,7 @@ - + @@ -1190,7 +1190,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08700-08799.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08700-08799.xml index 84d81a4b37..5c70280280 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08700-08799.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/08700-08799.xml @@ -1104,7 +1104,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/09200-09299.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/09200-09299.xml index d12dae215a..33a491f29f 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/09200-09299.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/09200-09299.xml @@ -116,7 +116,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/09700-09799.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/09700-09799.xml index d2a62b73c7..f13f9c2df8 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/09700-09799.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/09700-09799.xml @@ -46,7 +46,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/10100-10199.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/10100-10199.xml index 8fda375bd3..49fce6e1eb 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/10100-10199.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/10100-10199.xml @@ -1118,7 +1118,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/13000-13099.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/13000-13099.xml index f48f42583d..def2828bba 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/13000-13099.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/13000-13099.xml @@ -520,7 +520,7 @@ - + @@ -940,7 +940,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/13700-13799.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/13700-13799.xml index 30291387cb..0482115625 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/13700-13799.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/13700-13799.xml @@ -821,7 +821,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/14600-14699.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/14600-14699.xml index f7b7a38d3e..53e1f3568c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/14600-14699.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/14600-14699.xml @@ -1802,7 +1802,7 @@ - + @@ -1935,7 +1935,7 @@ - + @@ -2051,7 +2051,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/14700-14799.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/14700-14799.xml index 2c1f5466fa..8060013272 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/14700-14799.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/14700-14799.xml @@ -13,7 +13,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/17000-17099.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/17000-17099.xml index 429c42d589..a6a967557c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/17000-17099.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/17000-17099.xml @@ -97,7 +97,7 @@ - + @@ -352,7 +352,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/20300-20399.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/20300-20399.xml index ef0b89cf97..050b1ff7b0 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/20300-20399.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/20300-20399.xml @@ -988,7 +988,7 @@ - + @@ -1104,7 +1104,7 @@ - + @@ -1220,7 +1220,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/21000-21099.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/21000-21099.xml index d6fb37f7f8..c828247562 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/21000-21099.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/21000-21099.xml @@ -686,7 +686,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -786,7 +786,7 @@ - + @@ -808,7 +808,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/21100-21199.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/21100-21199.xml index 72a78fab86..bea690228d 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/21100-21199.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/21100-21199.xml @@ -1575,7 +1575,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/21200-21299.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/21200-21299.xml index effdd209ee..bd025d4d6a 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/21200-21299.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/21200-21299.xml @@ -207,7 +207,7 @@ - + @@ -802,7 +802,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -870,7 +870,7 @@ - + @@ -889,7 +889,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/22000-22099.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/22000-22099.xml index f31bc26203..643896e06b 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/22000-22099.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/22000-22099.xml @@ -449,7 +449,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -737,7 +737,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/22500-22599.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/22500-22599.xml index e6f61c6109..fbfe230224 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/22500-22599.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/22500-22599.xml @@ -1030,7 +1030,7 @@ - + @@ -1050,7 +1050,7 @@ - + @@ -1070,7 +1070,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/22600-22699.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/22600-22699.xml index afdc8ca402..1cd3f911ff 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/22600-22699.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/22600-22699.xml @@ -432,7 +432,7 @@ - + @@ -455,7 +455,7 @@ - + @@ -478,7 +478,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23200-23299.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23200-23299.xml index 6a0521cd58..7cda9cbe0a 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23200-23299.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23200-23299.xml @@ -163,7 +163,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -562,7 +562,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -590,7 +590,7 @@ - + @@ -608,7 +608,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23300-23399.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23300-23399.xml index 8d929f470d..354303b6b6 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23300-23399.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23300-23399.xml @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23400-23499.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23400-23499.xml index effd05b499..0953494331 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23400-23499.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23400-23499.xml @@ -1092,7 +1092,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1164,7 +1164,7 @@ - + @@ -1426,7 +1426,7 @@ - + @@ -1442,7 +1442,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23500-23599.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23500-23599.xml index 68ae350e6c..d97d50f712 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23500-23599.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23500-23599.xml @@ -93,7 +93,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23600-23699.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23600-23699.xml index 4123057f5b..a19495ecbe 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23600-23699.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/23600-23699.xml @@ -189,7 +189,7 @@ - + @@ -566,7 +566,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/28500-28599.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/28500-28599.xml index bf07ce7152..586af72c30 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/28500-28599.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/28500-28599.xml @@ -40,7 +40,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/30300-30399.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/30300-30399.xml index 6854d8c477..337d716805 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/30300-30399.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/30300-30399.xml @@ -984,7 +984,7 @@ - + @@ -1008,7 +1008,7 @@ - + @@ -1032,7 +1032,7 @@ - + @@ -1052,7 +1052,7 @@ - + @@ -1075,7 +1075,7 @@ - + @@ -1098,7 +1098,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/34000-34099.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/34000-34099.xml index ceed0e9937..3051ae7c92 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/34000-34099.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/34000-34099.xml @@ -180,7 +180,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -220,7 +220,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/34600-34699.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/34600-34699.xml index 4ca26b3542..3eb52d5ccf 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/34600-34699.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/34600-34699.xml @@ -41,7 +41,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/35600-35699.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/35600-35699.xml index b8e80e367d..a3b0cc12ec 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/35600-35699.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/35600-35699.xml @@ -1423,7 +1423,7 @@ - + @@ -1443,7 +1443,7 @@ - + @@ -1463,7 +1463,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/35700-35799.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/35700-35799.xml index 2a7159ad08..50f1f52823 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/35700-35799.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/35700-35799.xml @@ -771,7 +771,7 @@ - + @@ -791,7 +791,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/35900-35999.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/35900-35999.xml index c7446c0ed7..74183191eb 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/35900-35999.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/35900-35999.xml @@ -475,7 +475,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/36000-36099.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/36000-36099.xml index 6006920c6e..da5462dd68 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/36000-36099.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/36000-36099.xml @@ -377,7 +377,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/36200-36299.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/36200-36299.xml index 0681ca8078..f2eb0f7834 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/36200-36299.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/36200-36299.xml @@ -791,7 +791,7 @@ - + @@ -1079,7 +1079,7 @@ - + @@ -1096,7 +1096,7 @@ - + @@ -1113,7 +1113,7 @@ - + @@ -1130,7 +1130,7 @@ - + @@ -1146,7 +1146,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1210,7 +1210,7 @@ - + @@ -1247,7 +1247,7 @@ - + @@ -1265,7 +1265,7 @@ - + @@ -1283,7 +1283,7 @@ - + @@ -1301,7 +1301,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/36300-36399.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/36300-36399.xml index f2517964ec..f0616ad3a1 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/36300-36399.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/36300-36399.xml @@ -48,7 +48,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -80,7 +80,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -119,7 +119,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/37600-37699.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/37600-37699.xml index 63e344891b..f062aa682c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/37600-37699.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/37600-37699.xml @@ -1397,7 +1397,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/40000-40099.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/40000-40099.xml index 44e7b24b5d..58c0c622e1 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/40000-40099.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/40000-40099.xml @@ -870,7 +870,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47300-47399.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47300-47399.xml index 0abcbdc925..eb56a84174 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47300-47399.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47300-47399.xml @@ -1187,7 +1187,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47400-47499.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47400-47499.xml index 29e8d9e596..dbd352aae6 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47400-47499.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47400-47499.xml @@ -51,7 +51,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -442,7 +442,7 @@ - + @@ -473,7 +473,7 @@ - + @@ -502,7 +502,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47500-47599.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47500-47599.xml index 44cfac3ae8..7180a3c27c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47500-47599.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47500-47599.xml @@ -539,7 +539,7 @@ - + @@ -552,7 +552,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47600-47699.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47600-47699.xml index 71342cecd6..f08eb92ea0 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47600-47699.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47600-47699.xml @@ -652,7 +652,7 @@ - + @@ -668,7 +668,7 @@ - + @@ -684,7 +684,7 @@ - + @@ -700,7 +700,7 @@ - + @@ -716,7 +716,7 @@ - + @@ -743,7 +743,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -779,7 +779,7 @@ - + @@ -797,7 +797,7 @@ - + @@ -883,7 +883,7 @@ - + @@ -904,7 +904,7 @@ - + @@ -922,7 +922,7 @@ - + @@ -943,7 +943,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47700-47799.xml b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47700-47799.xml index 0c749938e5..955b8cae9c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47700-47799.xml +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/stats/items/47700-47799.xml @@ -500,7 +500,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -538,7 +538,7 @@ - + @@ -558,7 +558,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/items.xsd b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/items.xsd index f3bfdc3cc8..328252c40f 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_04.0_GrandCrusade/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_04.0_GrandCrusade/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_04.0_GrandCrusade/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_04.0_GrandCrusade/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/time/AddPattern.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/time/AddPattern.java new file mode 100644 index 0000000000..14478c0480 --- /dev/null +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/time/AddPattern.java @@ -0,0 +1,119 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class AddPattern implements NextTime +{ + private int _monthInc = -1; + private int _monthSet = -1; + private int _dayOfMonthInc = -1; + private int _dayOfMonthSet = -1; + private int _hourOfDayInc = -1; + private int _hourOfDaySet = -1; + private int _minuteInc = -1; + private int _minuteSet = -1; + + public AddPattern(String pattern) + { + String[] timeparts; + String[] parts = pattern.split("\\s+"); + if (parts.length == 2) + { + String datemodstr; + String datepartsstr = parts[0]; + String[] dateparts = datepartsstr.split(":"); + if (dateparts.length == 2) + { + if (dateparts[0].startsWith("+")) + { + _monthInc = Integer.parseInt(dateparts[0].substring(1)); + } + else + { + _monthSet = Integer.parseInt(dateparts[0]) - 1; + } + } + if ((datemodstr = dateparts[dateparts.length - 1]).startsWith("+")) + { + _dayOfMonthInc = Integer.parseInt(datemodstr.substring(1)); + } + else + { + _dayOfMonthSet = Integer.parseInt(datemodstr); + } + } + if ((timeparts = parts[parts.length - 1].split(":"))[0].startsWith("+")) + { + _hourOfDayInc = Integer.parseInt(timeparts[0].substring(1)); + } + else + { + _hourOfDaySet = Integer.parseInt(timeparts[0]); + } + if (timeparts[1].startsWith("+")) + { + _minuteInc = Integer.parseInt(timeparts[1].substring(1)); + } + else + { + _minuteSet = Integer.parseInt(timeparts[1]); + } + } + + @Override + public long next(long millis) + { + final GregorianCalendar gc = new GregorianCalendar(TimeZone.getDefault()); + gc.setTimeInMillis(millis); + if (_monthInc >= 0) + { + gc.add(2, _monthInc); + } + if (_monthSet >= 0) + { + gc.set(2, _monthSet); + } + if (_dayOfMonthInc >= 0) + { + gc.add(5, _dayOfMonthInc); + } + if (_dayOfMonthSet >= 0) + { + gc.set(5, _dayOfMonthSet); + } + if (_hourOfDayInc >= 0) + { + gc.add(11, _hourOfDayInc); + } + if (_hourOfDaySet >= 0) + { + gc.set(11, _hourOfDaySet); + } + if (_minuteInc >= 0) + { + gc.add(12, _minuteInc); + } + if (_minuteSet >= 0) + { + gc.set(12, _minuteSet); + } + return gc.getTimeInMillis(); + } +} diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/time/NextTime.java similarity index 84% rename from L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java rename to L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/time/NextTime.java index a1db9c20b8..9ada28449b 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/time/NextTime.java @@ -1,24 +1,22 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +public interface NextTime +{ + public long next(long var1); +} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/time/SchedulingPattern.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/time/SchedulingPattern.java new file mode 100644 index 0000000000..2199633b2b --- /dev/null +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/commons/time/SchedulingPattern.java @@ -0,0 +1,841 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.ArrayList; +import java.util.GregorianCalendar; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.TimeZone; +import java.util.TreeMap; + +import org.l2jmobius.commons.util.Rnd; + +public class SchedulingPattern implements NextTime +{ + private static final int MINUTE_MIN_VALUE = 0; + private static final int MINUTE_MAX_VALUE = 59; + private static final int HOUR_MIN_VALUE = 0; + private static final int HOUR_MAX_VALUE = 23; + private static final int DAY_OF_MONTH_MIN_VALUE = 1; + private static final int DAY_OF_MONTH_MAX_VALUE = 31; + private static final int MONTH_MIN_VALUE = 1; + private static final int MONTH_MAX_VALUE = 12; + private static final int DAY_OF_WEEK_MIN_VALUE = 0; + private static final int DAY_OF_WEEK_MAX_VALUE = 7; + private static final ValueParser MINUTE_VALUE_PARSER = new MinuteValueParser(); + private static final ValueParser HOUR_VALUE_PARSER = new HourValueParser(); + private static final ValueParser DAY_OF_MONTH_VALUE_PARSER = new DayOfMonthValueParser(); + private static final ValueParser MONTH_VALUE_PARSER = new MonthValueParser(); + private static final ValueParser DAY_OF_WEEK_VALUE_PARSER = new DayOfWeekValueParser(); + private final String _asString; + protected List _minuteMatchers = new ArrayList<>(); + protected List _hourMatchers = new ArrayList<>(); + protected List _dayOfMonthMatchers = new ArrayList<>(); + protected List _monthMatchers = new ArrayList<>(); + protected List _dayOfWeekMatchers = new ArrayList<>(); + protected int _matcherSize = 0; + protected Map _hourAdder = new TreeMap<>(); + protected Map _hourAdderRnd = new TreeMap<>(); + protected Map _dayOfYearAdder = new TreeMap<>(); + protected Map _minuteAdderRnd = new TreeMap<>(); + protected Map _weekOfYearAdder = new TreeMap<>(); + + public static boolean validate(String schedulingPattern) + { + try + { + new SchedulingPattern(schedulingPattern); + } + catch (RuntimeException e) + { + return false; + } + return true; + } + + public SchedulingPattern(String pattern) throws RuntimeException + { + _asString = pattern; + StringTokenizer st1 = new StringTokenizer(pattern, "|"); + if (st1.countTokens() < 1) + { + throw new RuntimeException("invalid pattern: \"" + pattern + "\""); + } + + while (st1.hasMoreTokens()) + { + int i; + String localPattern = st1.nextToken(); + StringTokenizer st2 = new StringTokenizer(localPattern, " \t"); + int tokCnt = st2.countTokens(); + if ((tokCnt < 5) || (tokCnt > 6)) + { + throw new RuntimeException("invalid pattern: \"" + localPattern + "\""); + } + + try + { + String minutePattern = st2.nextToken(); + String[] minutePatternParts = minutePattern.split(":"); + if (minutePatternParts.length > 1) + { + for (i = 0; i < (minutePatternParts.length - 1); ++i) + { + if (minutePatternParts[i].length() <= 1) + { + continue; + } + + if (minutePatternParts[i].startsWith("~")) + { + _minuteAdderRnd.put(_matcherSize, Integer.parseInt(minutePatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + minutePatternParts[i] + "\""); + } + minutePattern = minutePatternParts[minutePatternParts.length - 1]; + } + _minuteMatchers.add(buildValueMatcher(minutePattern, MINUTE_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing minutes field: " + e.getMessage() + "."); + } + + try + { + String hourPattern = st2.nextToken(); + String[] hourPatternParts = hourPattern.split(":"); + if (hourPatternParts.length > 1) + { + for (i = 0; i < (hourPatternParts.length - 1); ++i) + { + if (hourPatternParts[i].length() <= 1) + { + continue; + } + + if (hourPatternParts[i].startsWith("+")) + { + _hourAdder.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + if (hourPatternParts[i].startsWith("~")) + { + _hourAdderRnd.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + hourPatternParts[i] + "\""); + } + hourPattern = hourPatternParts[hourPatternParts.length - 1]; + } + _hourMatchers.add(buildValueMatcher(hourPattern, HOUR_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing hours field: " + e.getMessage() + "."); + } + + try + { + String dayOfMonthPattern = st2.nextToken(); + String[] dayOfMonthPatternParts = dayOfMonthPattern.split(":"); + if (dayOfMonthPatternParts.length > 1) + { + for (i = 0; i < (dayOfMonthPatternParts.length - 1); ++i) + { + if (dayOfMonthPatternParts[i].length() <= 1) + { + continue; + } + + if (dayOfMonthPatternParts[i].startsWith("+")) + { + _dayOfYearAdder.put(_matcherSize, Integer.parseInt(dayOfMonthPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown day modifier \"" + dayOfMonthPatternParts[i] + "\""); + } + dayOfMonthPattern = dayOfMonthPatternParts[dayOfMonthPatternParts.length - 1]; + } + _dayOfMonthMatchers.add(buildValueMatcher(dayOfMonthPattern, DAY_OF_MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of month field: " + e.getMessage() + "."); + } + + try + { + _monthMatchers.add(buildValueMatcher(st2.nextToken(), MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing months field: " + e.getMessage() + "."); + } + + try + { + _dayOfWeekMatchers.add(buildValueMatcher(st2.nextToken(), DAY_OF_WEEK_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + + if (st2.hasMoreTokens()) + { + try + { + String weekOfYearAdderText = st2.nextToken(); + if (weekOfYearAdderText.charAt(0) != '+') + { + throw new RuntimeException("Unknown week of year addition in pattern \"" + localPattern + "\"."); + } + weekOfYearAdderText = weekOfYearAdderText.substring(1); + _weekOfYearAdder.put(_matcherSize, Integer.parseInt(weekOfYearAdderText)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + } + ++_matcherSize; + } + } + + private ValueMatcher buildValueMatcher(String str, ValueParser parser) throws Exception + { + if ((str.length() == 1) && str.equals("*")) + { + return new AlwaysTrueValueMatcher(); + } + + ArrayList values = new ArrayList<>(); + StringTokenizer st = new StringTokenizer(str, ","); + while (st.hasMoreTokens()) + { + List local; + String element = st.nextToken(); + try + { + local = parseListElement(element, parser); + } + catch (Exception e) + { + throw new Exception("invalid field \"" + str + "\", invalid element \"" + element + "\", " + e.getMessage()); + } + + for (Integer value : local) + { + if (values.contains(value)) + { + continue; + } + + values.add(value); + } + } + + if (values.size() == 0) + { + throw new Exception("invalid field \"" + str + "\""); + } + + if (parser == DAY_OF_MONTH_VALUE_PARSER) + { + return new DayOfMonthValueMatcher(values); + } + + return new IntArrayValueMatcher(values); + } + + private List parseListElement(String str, ValueParser parser) throws Exception + { + List values; + StringTokenizer st = new StringTokenizer(str, "/"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + try + { + values = parseRange(st.nextToken(), parser); + } + catch (Exception e) + { + throw new Exception("invalid range, " + e.getMessage()); + } + + if (size == 2) + { + int div; + String dStr = st.nextToken(); + + try + { + div = Integer.parseInt(dStr); + } + catch (NumberFormatException e) + { + throw new Exception("invalid divisor \"" + dStr + "\""); + } + + if (div < 1) + { + throw new Exception("non positive divisor \"" + div + "\""); + } + + ArrayList values2 = new ArrayList<>(); + for (int i = 0; i < values.size(); i += div) + { + values2.add(values.get(i)); + } + + return values2; + } + return values; + } + + private List parseRange(String str, ValueParser parser) throws Exception + { + int v2; + int v1; + if (str.equals("*")) + { + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + ArrayList values = new ArrayList<>(); + for (int i = min; i <= max; ++i) + { + values.add(i); + } + return values; + } + + StringTokenizer st = new StringTokenizer(str, "-"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + String v1Str = st.nextToken(); + try + { + v1 = parser.parse(v1Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v1Str + "\", " + e.getMessage()); + } + + if (size == 1) + { + ArrayList values = new ArrayList<>(); + values.add(v1); + return values; + } + + String v2Str = st.nextToken(); + try + { + v2 = parser.parse(v2Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v2Str + "\", " + e.getMessage()); + } + + ArrayList values = new ArrayList<>(); + if (v1 < v2) + { + for (int i = v1; i <= v2; ++i) + { + values.add(i); + } + } + else if (v1 > v2) + { + int i; + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + for (i = v1; i <= max; ++i) + { + values.add(i); + } + for (i = min; i <= v2; ++i) + { + values.add(i); + } + } + else + { + values.add(v1); + } + + return values; + } + + public boolean match(TimeZone timezone, long millis) + { + GregorianCalendar gc = new GregorianCalendar(timezone); + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + for (int i = 0; i < _matcherSize; ++i) + { + boolean eval = false; + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, -_weekOfYearAdder.get(i).intValue()); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, -_dayOfYearAdder.get(i).intValue()); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, -_hourAdder.get(i).intValue()); + } + int minute = gc.get(MONTH_MAX_VALUE); + int hour = gc.get(11); + int dayOfMonth = gc.get(5); + int month = gc.get(2) + 1; + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + int year = gc.get(1); + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + @SuppressWarnings("unused") + boolean bl = minuteMatcher.match(minute) && hourMatcher.match(hour) && (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, gc.isLeapYear(year)) : dayOfMonthMatcher.match(dayOfMonth)) && monthMatcher.match(month) && dayOfWeekMatcher.match(dayOfWeek) ? true : (eval = false); + if (!eval) + { + continue; + } + return true; + } + return false; + } + + public boolean match(long millis) + { + return match(TimeZone.getDefault(), millis); + } + + public long next(TimeZone timezone, long millis) + { + long result = -1L; + GregorianCalendar gc = new GregorianCalendar(timezone); + for (int i = 0; i < _matcherSize; ++i) + { + long next = -1L; + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, _weekOfYearAdder.get(i)); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, _dayOfYearAdder.get(i)); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, _hourAdder.get(i)); + } + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + SEARCH: do + { + int year = gc.get(1); + boolean isLeapYear = gc.isLeapYear(year); + for (int month = gc.get(2) + 1; month <= MONTH_MAX_VALUE; ++month) + { + if (monthMatcher.match(month)) + { + gc.set(2, month - 1); + int maxDayOfMonth = DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + for (int dayOfMonth = gc.get(5); dayOfMonth <= maxDayOfMonth; ++dayOfMonth) + { + if (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, isLeapYear) : dayOfMonthMatcher.match(dayOfMonth)) + { + gc.set(5, dayOfMonth); + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + if (dayOfWeekMatcher.match(dayOfWeek)) + { + for (int hour = gc.get(11); hour <= HOUR_MAX_VALUE; ++hour) + { + if (hourMatcher.match(hour)) + { + gc.set(11, hour); + for (int minute = gc.get(MONTH_MAX_VALUE); minute <= MINUTE_MAX_VALUE; ++minute) + { + if (!minuteMatcher.match(minute)) + { + continue; + } + + gc.set(MONTH_MAX_VALUE, minute); + long next0 = gc.getTimeInMillis(); + if (next0 <= millis) + { + continue; + } + + if ((next != -1L) && (next0 >= next)) + { + break SEARCH; + } + + next = next0; + if (_hourAdderRnd.containsKey(i)) + { + next += Rnd.get(_hourAdderRnd.get(i)) * 60 * 60 * 1000L; + } + + if (!_minuteAdderRnd.containsKey(i)) + { + break SEARCH; + } + + next += Rnd.get(_minuteAdderRnd.get(i)) * 60 * 1000L; + break SEARCH; + } + } + gc.set(MONTH_MAX_VALUE, 0); + } + } + } + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + } + gc.set(5, 1); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + gc.set(2, 0); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + gc.roll(1, true); + } + + while (true); + if ((next <= millis) || ((result != -1L) && (next >= result))) + { + continue; + } + + result = next; + } + return result; + } + + @Override + public long next(long millis) + { + return next(TimeZone.getDefault(), millis); + } + + @Override + public String toString() + { + return _asString; + } + + private static int parseAlias(String value, String[] aliases, int offset) throws Exception + { + for (int i = 0; i < aliases.length; ++i) + { + if (!aliases[i].equalsIgnoreCase(value)) + { + continue; + } + return offset + i; + } + throw new Exception("invalid alias \"" + value + "\""); + } + + private static class DayOfMonthValueMatcher extends IntArrayValueMatcher + { + private static final int[] lastDays = new int[] + { + DAY_OF_MONTH_MAX_VALUE, + 28, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE + }; + + public DayOfMonthValueMatcher(List integers) + { + super(integers); + } + + public boolean match(int value, int month, boolean isLeapYear) + { + return super.match(value) || ((value > 27) && match(32) && DayOfMonthValueMatcher.isLastDayOfMonth(value, month, isLeapYear)); + } + + public static int getLastDayOfMonth(int month, boolean isLeapYear) + { + if (isLeapYear && (month == 2)) + { + return 29; + } + + return lastDays[month - 1]; + } + + public static boolean isLastDayOfMonth(int value, int month, boolean isLeapYear) + { + return value == DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + } + } + + private static class IntArrayValueMatcher implements ValueMatcher + { + private final int[] values; + + public IntArrayValueMatcher(List integers) + { + int size = integers.size(); + values = new int[size]; + for (int i = 0; i < size; ++i) + { + try + { + values[i] = integers.get(i); + continue; + } + catch (Exception e) + { + throw new IllegalArgumentException(e.getMessage()); + } + } + } + + @Override + public boolean match(int value) + { + for (int i = 0; i < values.length; ++i) + { + if (values[i] != value) + { + continue; + } + return true; + } + return false; + } + } + + private static class AlwaysTrueValueMatcher implements ValueMatcher + { + private AlwaysTrueValueMatcher() + { + } + + @Override + public boolean match(int value) + { + return true; + } + } + + private static interface ValueMatcher + { + public boolean match(int var1); + } + + private static class DayOfWeekValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + }; + + public DayOfWeekValueParser() + { + super(DAY_OF_WEEK_MIN_VALUE, DAY_OF_WEEK_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value) % DAY_OF_WEEK_MAX_VALUE; + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 0); + } + } + } + + private static class MonthValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "jan", + "feb", + "mar", + "apr", + "may", + "jun", + "jul", + "aug", + "sep", + "oct", + "nov", + "dec" + }; + + public MonthValueParser() + { + super(MONTH_MIN_VALUE, MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value); + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 1); + } + } + } + + private static class DayOfMonthValueParser extends SimpleValueParser + { + public DayOfMonthValueParser() + { + super(DAY_OF_MONTH_MIN_VALUE, DAY_OF_MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + if (value.equalsIgnoreCase("L")) + { + return 32; + } + return super.parse(value); + } + } + + private static class HourValueParser extends SimpleValueParser + { + public HourValueParser() + { + super(HOUR_MIN_VALUE, HOUR_MAX_VALUE); + } + } + + private static class MinuteValueParser extends SimpleValueParser + { + public MinuteValueParser() + { + super(MINUTE_MIN_VALUE, MINUTE_MAX_VALUE); + } + } + + private static class SimpleValueParser implements ValueParser + { + protected int _minValue; + protected int _maxValue; + + public SimpleValueParser(int minValue, int maxValue) + { + _minValue = minValue; + _maxValue = maxValue; + } + + @Override + public int parse(String value) throws Exception + { + int i; + try + { + i = Integer.parseInt(value); + } + catch (NumberFormatException e) + { + throw new Exception("invalid integer value"); + } + if ((i < _minValue) || (i > _maxValue)) + { + throw new Exception("value out of range"); + } + return i; + } + + @Override + public int getMinValue() + { + return _minValue; + } + + @Override + public int getMaxValue() + { + return _maxValue; + } + } + + private static interface ValueParser + { + public int parse(String var1) throws Exception; + + public int getMinValue(); + + public int getMaxValue(); + } +} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/GameServer.java index b03ddc024d..61ab0d573c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/GameServer.java @@ -69,7 +69,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemHPBonusData; import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -389,8 +388,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/Shutdown.java index 9e0bc3126c..02419a263c 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/Shutdown.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.BotReportTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -452,8 +451,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 21e1b9fe11..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_6_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANT_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); - resetDailyMissionRewards(); resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); - onResetAttendanceRewards(); + resetDailyMissionRewards(); + resetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -83,8 +103,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -102,8 +121,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -150,12 +210,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -260,7 +319,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index b8c6dd4354..1caec8603d 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java index 3cc1d29bc5..2c8d3a34bc 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5037,15 +5037,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Summon.java index 919cda941e..6115effc29 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 545a7ff5dd..e4200e0af7 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -128,7 +128,6 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -181,7 +180,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -189,7 +187,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -218,7 +215,6 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MonsterBookCardHolder; import org.l2jmobius.gameserver.model.holders.MonsterBookRewardHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.RecipeHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; @@ -697,10 +693,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -731,7 +723,9 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnSoloEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -858,7 +852,7 @@ public class PlayerInstance extends Playable // Shared dualclass skills. private static final String KNOWN_DUAL_SKILLS_VAR = "KNOWN_DUAL_SKILLS"; - private static final int[] DUAL_CLASS_SKILLS = new int[] + private static final int[] DUAL_CLASS_SKILLS = { 19222, // Dignity of the Exalted 19223, // Belief of the Exalted @@ -2927,11 +2921,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4867,10 +4857,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5034,7 +5020,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5360,7 +5346,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8120,7 +8106,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8181,22 +8167,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return isOnSoloEvent() || (getTeam() != attacker.getTeam()); } // Check if the attacker is a Playable @@ -9371,12 +9348,7 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) - { - _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; - return false; - } - if (isOnEvent()) // custom event message + if (_inOlympiadMode || isRegisteredOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11160,12 +11132,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -13032,16 +12998,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13140,21 +13096,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13214,13 +13155,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13234,66 +13168,50 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; + } + + public boolean isOnSoloEvent() + { + return _isOnSoloEvent; + } + + public void setOnSoloEvent(boolean value) + { + _isOnSoloEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13844,63 +13762,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index dc9069975f..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,702 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.enums.QuestSound; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.quest.QuestState; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - - // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player == null) - { - continue; - } - final QuestState qs = player.getQuestState("Q10813_ForGlory"); - final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); - if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId()) >= Config.EXALTED_FOR_GLORY_ITEM_MAX.getCount()) - { - qs.setCond(2, true); - } - } - else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId()) >= Config.EXALTED_FOR_HONOR_ITEM_MAX.getCount()) - { - qs1.setCond(2, true); - } - } - } - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 0b10e75f59..94eee3bae6 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java index fb0f2bb3da..06efad6874 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java @@ -18,7 +18,7 @@ package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; import java.util.List; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; @@ -27,21 +27,21 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; */ public class OnCeremonyOfChaosMatchResult implements IBaseEvent { - private final List _winners; - private final List _members; + private final List _winners; + private final List _members; - public OnCeremonyOfChaosMatchResult(List winners, List members) + public OnCeremonyOfChaosMatchResult(List winners, List members) { _winners = winners; _members = members; } - public List getWinners() + public List getWinners() { return _winners; } - public List getMembers() + public List getMembers() { return _members; } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index b323a33915..29cce0c911 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANT_ZONE); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/Item.java index 4660056074..2037df0278 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -146,7 +145,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -219,7 +218,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -854,9 +853,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -931,11 +930,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index d22b61753b..d92af66d81 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 77fb41d2bb..d4cc53c0de 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 6427291d5b..0c8ec4ff3e 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -45,7 +45,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -424,11 +423,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5154368eb9..4b61f82ce4 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java index 4bdb81ff87..35fc8e1620 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillTreeData; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -95,12 +94,12 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket player.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java index ebce100c73..dc4e0434d4 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java @@ -23,7 +23,6 @@ import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.enums.SkillFinishType; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -64,12 +63,12 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket client.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { client.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java index ce871f6a18..88a7ec13b1 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,15 +42,15 @@ public class RequestCancelCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } + // if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); + // player.sendPacket(ExCuriousHouseState.IDLE_PACKET); + // + // if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) + // { + // player.prohibiteCeremonyOfChaos(); + // } + // } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java index a4e6f04627..c9e0872ac9 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; /** * @author Sdw @@ -46,21 +42,21 @@ public class RequestCuriousHouseHtml implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) + // { + // final NpcHtmlMessage message = new NpcHtmlMessage(0); + // message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); + // player.sendPacket(message); + // } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java index 33ca3d7b33..9fd38f3805 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,25 +42,25 @@ public class RequestJoinCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); + // player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); + // player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); + // } + // else + // { + // player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); + // } } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 8871f7a5a0..616896b483 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -265,7 +261,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java index d26eee8d89..7c74a35616 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java @@ -20,7 +20,6 @@ import java.util.Collection; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -31,9 +30,9 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket { private final int _id; private final int _maxPlayers; - private final Collection _players; + private final Collection _players; - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) + public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) { _id = id; _maxPlayers = maxPlayers; @@ -48,25 +47,14 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket packet.writeD(_id); packet.writeD(_maxPlayers); packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) + for (PlayerInstance player : _players) { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getMaxHp()); + packet.writeD(player.getMaxCp()); + packet.writeD((int) player.getCurrentHp()); + packet.writeD((int) player.getCurrentCp()); } return true; } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java index 1f09c4de0d..27605b732b 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java @@ -16,10 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; +import java.util.Collection; + import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -29,30 +30,30 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; public class ExCuriousHouseResult implements IClientOutgoingPacket { private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; + private final Collection _players; - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) + public ExCuriousHouseResult(CeremonyOfChaosResult result, Collection players) { _result = result; - _event = event; + _players = players; } @Override public boolean write(PacketWriter packet) { OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); + packet.writeD(0); // _event.getId() packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> + packet.writeD(_players.size()); // CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + packet.writeD(_players.size()); + for (PlayerInstance player : _players) { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getClassId().getId()); + packet.writeD(0x00); // getLifeTime + packet.writeD(0x00); // getScore + } return true; } } diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java index 2ee70b560d..5e4c984dac 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java @@ -19,9 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets.dailymission; import java.time.LocalDate; import java.util.Collection; import java.util.Collections; -import java.util.function.Function; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; @@ -29,28 +29,28 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import it.sauronsoftware.cron4j.Predictor; - /** * @author Sdw */ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket { - final PlayerInstance _player; - private final Collection _rewards; - private static final Function _remainTime = pattern -> (new Predictor(pattern).nextMatchingTime() - Chronos.currentTimeMillis()) / 1000; + private static final SchedulingPattern DAILY_REUSE_PATTERN = new SchedulingPattern("30 6 * * *"); + private static final SchedulingPattern WEEKLY_REUSE_PATTERN = new SchedulingPattern("30 6 * * 1"); + private static final SchedulingPattern MONTHLY_REUSE_PATTERN = new SchedulingPattern("30 6 1 * *"); - private final long _dayRemainTime; - private final long _weekRemainTime; - private final long _monthRemainTime; + private final PlayerInstance _player; + private final Collection _rewards; + private final int _dayRemainTime; + private final int _weekRemainTime; + private final int _monthRemainTime; public ExOneDayReceiveRewardList(PlayerInstance player, boolean sendRewards) { _player = player; _rewards = sendRewards ? DailyMissionData.getInstance().getDailyMissionData(player) : Collections.emptyList(); - _dayRemainTime = _remainTime.apply("30 6 * * *"); - _weekRemainTime = _remainTime.apply("30 6 * * 1"); - _monthRemainTime = _remainTime.apply("30 6 1 * *"); + _dayRemainTime = (int) ((DAILY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _weekRemainTime = (int) ((WEEKLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _monthRemainTime = (int) ((MONTHLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); } @Override @@ -63,9 +63,9 @@ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket OutgoingPackets.EX_ONE_DAY_RECEIVE_REWARD_LIST.writeId(packet); - packet.writeD((int) _dayRemainTime); - packet.writeD((int) _weekRemainTime); - packet.writeD((int) _monthRemainTime); + packet.writeD(_dayRemainTime); + packet.writeD(_weekRemainTime); + packet.writeD(_monthRemainTime); packet.writeC(0x17); packet.writeD(_player.getClassId().getId()); packet.writeD(LocalDate.now().getDayOfWeek().ordinal()); // Day of week diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_05.0_Salvation/.classpath b/L2J_Mobius_05.0_Salvation/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_05.0_Salvation/.classpath +++ b/L2J_Mobius_05.0_Salvation/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_05.0_Salvation/dist/game/config/AdminCommands.xml b/L2J_Mobius_05.0_Salvation/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/events/CeremonyOfChaos.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/events/CeremonyOfChaos.xml deleted file mode 100644 index 7331135977..0000000000 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/events/CeremonyOfChaos.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - 224 - 225 - 226 - 227 - - - - - - - Ceremony of Chaos has ended. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - start - end - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index 087cf3ce1a..0000000000 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/events/Elpies.txt b/L2J_Mobius_05.0_Salvation/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/events/Rabbits.txt b/L2J_Mobius_05.0_Salvation/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/events/Race.txt b/L2J_Mobius_05.0_Salvation/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_05.0_Salvation/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_05.0_Salvation/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_05.0_Salvation/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index c238f3e148..32c30a80f5 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -155,7 +155,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -190,7 +190,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -248,7 +248,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -298,7 +298,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java index 92f5f478a9..848e1d690e 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java @@ -19,7 +19,6 @@ package ai.others.LaVieEnRose; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -128,13 +127,7 @@ public class LaVieEnRose extends AbstractNpcAI return false; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_USE_THE_BEAUTY_SHOP_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - return false; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot use the Beauty Shop while registered in an event."); return false; diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java index e879012594..5eb992eefb 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java @@ -334,9 +334,9 @@ public class OlyManager extends AbstractNpcAI implements IBypassHandler player.sendPacket(SystemMessageId.THE_OLYMPIAD_GAMES_ARE_NOT_CURRENTLY_IN_PROGRESS); return false; } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { - player.sendMessage("You can not observe games while registered on an event"); + player.sendMessage("You can not observe games while registered on an event."); return false; } else diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java index dfcb4a657c..3e329ec73b 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; @@ -266,11 +265,7 @@ public class TrainingCamp extends AbstractNpcAI { return false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. { return false; } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 9ad4e3bb0c..a696d73a9b 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -145,7 +145,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -170,13 +170,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -225,7 +225,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -262,6 +262,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -452,7 +453,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -479,7 +480,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -532,7 +533,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -579,7 +580,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -606,7 +607,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -637,7 +638,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -724,7 +725,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -776,7 +777,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -881,7 +882,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/MasterHandler.java index 55bad5a1b8..c8d35a96df 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -144,7 +143,6 @@ import handlers.bypasshandlers.ChangePlayerName; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -412,7 +410,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -482,7 +479,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java index 95af1dea6b..f075754123 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java @@ -99,7 +99,7 @@ public class SkillConditionMasterHandler SkillConditionHandler.getInstance().registerHandler("OpNeedSummonOrPet", OpNeedSummonOrPetSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotAffectedBySkill", OpNotAffectedBySkillSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotCursed", OpNotCursedSkillCondition::new); - SkillConditionHandler.getInstance().registerHandler("OpNotInCeremonyOfChaos", OpNotInCeremonyOfChaosSkillCondition::new); + SkillConditionHandler.getInstance().registerHandler("OpNotInEvent", OpNotInEventSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInPeacezone", OpNotInPeacezoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInstantzone", OpNotInstantzoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotOlympiad", OpNotOlympiadSkillCondition::new); diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/bypasshandlers/Observation.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/bypasshandlers/Observation.java index d22bb52414..1fa83903f2 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/bypasshandlers/Observation.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/bypasshandlers/Observation.java @@ -99,9 +99,9 @@ public class Observation implements IBypassHandler player.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_SIEGE_WITH_A_PET_OR_SERVITOR_SUMMONED); return false; } - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("Cannot use while current Event"); + player.sendMessage("Cannot use while registered on an event."); return false; } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java deleted file mode 100644 index b5cefc61cc..0000000000 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.skillconditionhandlers; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.WorldObject; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.skills.ISkillCondition; -import org.l2jmobius.gameserver.model.skills.Skill; - -/** - * @author Mobius - */ -public class OpNotInCeremonyOfChaosSkillCondition implements ISkillCondition -{ - public OpNotInCeremonyOfChaosSkillCondition(StatSet params) - { - } - - @Override - public boolean canUse(Creature caster, Skill skill, WorldObject target) - { - return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)); - } -} diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java new file mode 100644 index 0000000000..8b23f3b8b5 --- /dev/null +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java @@ -0,0 +1,39 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package handlers.skillconditionhandlers; + +import org.l2jmobius.gameserver.model.StatSet; +import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.model.skills.ISkillCondition; +import org.l2jmobius.gameserver.model.skills.Skill; + +/** + * @author Mobius + */ +public class OpNotInEventSkillCondition implements ISkillCondition +{ + public OpNotInEventSkillCondition(StatSet params) + { + } + + @Override + public boolean canUse(Creature caster, Skill skill, WorldObject target) + { + return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent()); + } +} diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java index 6ef0fa1dfd..ab21b5df1b 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java @@ -162,7 +162,7 @@ public class Q10813_ForGlory extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java index 86ea55caf9..0ea6ef37e1 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java @@ -169,7 +169,7 @@ public class Q10819_ForHonor extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/00000-00099.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/00000-00099.xml index be404ddcf6..caa2654e88 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/00000-00099.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/00000-00099.xml @@ -1155,7 +1155,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/00700-00799.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/00700-00799.xml index 3bba8d95d8..fde4929691 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/00700-00799.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/00700-00799.xml @@ -393,7 +393,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -436,7 +436,7 @@ - + @@ -452,7 +452,7 @@ - + @@ -491,7 +491,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -537,7 +537,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -615,7 +615,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/00900-00999.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/00900-00999.xml index e581f025c3..70ff0bbcd8 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/00900-00999.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/00900-00999.xml @@ -728,7 +728,7 @@ - + @@ -746,7 +746,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -788,7 +788,7 @@ - + @@ -806,7 +806,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -833,7 +833,7 @@ - + @@ -848,7 +848,7 @@ - + @@ -866,7 +866,7 @@ - + @@ -881,7 +881,7 @@ - + @@ -893,7 +893,7 @@ - + @@ -908,7 +908,7 @@ - + @@ -926,7 +926,7 @@ - + @@ -941,7 +941,7 @@ - + @@ -953,7 +953,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/01000-01099.xml index 376059b37f..fc841aa214 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/01000-01099.xml @@ -700,7 +700,7 @@ - + @@ -723,7 +723,7 @@ - + @@ -881,7 +881,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/01500-01599.xml index cbee353543..dd6f929d62 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/05200-05299.xml index db35d4c640..f4997d820a 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/05200-05299.xml @@ -486,7 +486,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -528,7 +528,7 @@ - + @@ -549,7 +549,7 @@ - + @@ -570,7 +570,7 @@ - + @@ -591,7 +591,7 @@ - + @@ -612,7 +612,7 @@ - + @@ -633,7 +633,7 @@ - + @@ -654,7 +654,7 @@ - + @@ -675,7 +675,7 @@ - + @@ -696,7 +696,7 @@ - + @@ -717,7 +717,7 @@ - + @@ -738,7 +738,7 @@ - + @@ -759,7 +759,7 @@ - + @@ -780,7 +780,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/05500-05599.xml index 98f1da3f03..58a7e146f6 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/05500-05599.xml @@ -1088,7 +1088,7 @@ - + @@ -1107,7 +1107,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/06400-06499.xml index 942adb3f66..9dc18fc4a7 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -135,7 +135,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08100-08199.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08100-08199.xml index 241a1c588a..3e65d43c01 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08100-08199.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08100-08199.xml @@ -2125,7 +2125,7 @@ - + @@ -2142,7 +2142,7 @@ - + @@ -2159,7 +2159,7 @@ - + @@ -2176,7 +2176,7 @@ - + @@ -2193,7 +2193,7 @@ - + @@ -2210,7 +2210,7 @@ - + @@ -2227,7 +2227,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08200-08299.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08200-08299.xml index ccb00473a9..1f9379aa9b 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08200-08299.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08200-08299.xml @@ -12,7 +12,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08600-08699.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08600-08699.xml index b430b02354..4224b0540c 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08600-08699.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08600-08699.xml @@ -374,7 +374,7 @@ - + @@ -512,7 +512,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -998,7 +998,7 @@ - + @@ -1014,7 +1014,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1046,7 +1046,7 @@ - + @@ -1062,7 +1062,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1094,7 +1094,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1126,7 +1126,7 @@ - + @@ -1142,7 +1142,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1174,7 +1174,7 @@ - + @@ -1190,7 +1190,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08700-08799.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08700-08799.xml index ae822319fd..0b7a75602f 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08700-08799.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/08700-08799.xml @@ -1104,7 +1104,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/09200-09299.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/09200-09299.xml index a986a6d729..0f2ee4b44f 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/09200-09299.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/09200-09299.xml @@ -116,7 +116,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/09700-09799.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/09700-09799.xml index d2a62b73c7..f13f9c2df8 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/09700-09799.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/09700-09799.xml @@ -46,7 +46,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/10100-10199.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/10100-10199.xml index 2c641f24f6..65ba491083 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/10100-10199.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/10100-10199.xml @@ -1118,7 +1118,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/13000-13099.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/13000-13099.xml index c8424db2cd..f55acca1f2 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/13000-13099.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/13000-13099.xml @@ -520,7 +520,7 @@ - + @@ -940,7 +940,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/13700-13799.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/13700-13799.xml index 041ec47eaa..c26233df2f 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/13700-13799.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/13700-13799.xml @@ -821,7 +821,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/14600-14699.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/14600-14699.xml index 046a1fe6fa..d852d47091 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/14600-14699.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/14600-14699.xml @@ -1802,7 +1802,7 @@ - + @@ -1935,7 +1935,7 @@ - + @@ -2051,7 +2051,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/14700-14799.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/14700-14799.xml index aff527ac6b..23b4c201c9 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/14700-14799.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/14700-14799.xml @@ -13,7 +13,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/17000-17099.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/17000-17099.xml index 17a34bb159..2d02f5d2b2 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/17000-17099.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/17000-17099.xml @@ -97,7 +97,7 @@ - + @@ -352,7 +352,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/20300-20399.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/20300-20399.xml index 739c950cc0..730375aaec 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/20300-20399.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/20300-20399.xml @@ -988,7 +988,7 @@ - + @@ -1104,7 +1104,7 @@ - + @@ -1220,7 +1220,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/21000-21099.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/21000-21099.xml index e6bb55a580..6230f573dd 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/21000-21099.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/21000-21099.xml @@ -686,7 +686,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -786,7 +786,7 @@ - + @@ -808,7 +808,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/21100-21199.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/21100-21199.xml index 1674df9cd6..b3c74373a9 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/21100-21199.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/21100-21199.xml @@ -1575,7 +1575,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/21200-21299.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/21200-21299.xml index 98d4f9cdc0..119afabbe6 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/21200-21299.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/21200-21299.xml @@ -207,7 +207,7 @@ - + @@ -802,7 +802,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -870,7 +870,7 @@ - + @@ -889,7 +889,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/22000-22099.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/22000-22099.xml index 6f8da11df0..d62078e49a 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/22000-22099.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/22000-22099.xml @@ -449,7 +449,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -737,7 +737,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/22500-22599.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/22500-22599.xml index edc51f1c05..c0d764e289 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/22500-22599.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/22500-22599.xml @@ -1030,7 +1030,7 @@ - + @@ -1050,7 +1050,7 @@ - + @@ -1070,7 +1070,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/22600-22699.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/22600-22699.xml index ad95c42d9d..917cd610ae 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/22600-22699.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/22600-22699.xml @@ -430,7 +430,7 @@ - + @@ -453,7 +453,7 @@ - + @@ -476,7 +476,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23200-23299.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23200-23299.xml index 706b392931..7db204afbc 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23200-23299.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23200-23299.xml @@ -163,7 +163,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -562,7 +562,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -590,7 +590,7 @@ - + @@ -608,7 +608,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23300-23399.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23300-23399.xml index 92b1b4a0da..4123036277 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23300-23399.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23300-23399.xml @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23400-23499.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23400-23499.xml index 6090fc9b09..0fb58b7269 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23400-23499.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23400-23499.xml @@ -1092,7 +1092,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1164,7 +1164,7 @@ - + @@ -1426,7 +1426,7 @@ - + @@ -1442,7 +1442,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23500-23599.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23500-23599.xml index 6f493c23d0..32497bbdf8 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23500-23599.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23500-23599.xml @@ -93,7 +93,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23600-23699.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23600-23699.xml index dc02e2fba1..7aef568dc1 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23600-23699.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/23600-23699.xml @@ -189,7 +189,7 @@ - + @@ -566,7 +566,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/28500-28599.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/28500-28599.xml index e7bf58493c..42422d4bfe 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/28500-28599.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/28500-28599.xml @@ -43,7 +43,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/30300-30399.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/30300-30399.xml index e6213acdb5..7803e85235 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/30300-30399.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/30300-30399.xml @@ -984,7 +984,7 @@ - + @@ -1008,7 +1008,7 @@ - + @@ -1032,7 +1032,7 @@ - + @@ -1052,7 +1052,7 @@ - + @@ -1075,7 +1075,7 @@ - + @@ -1098,7 +1098,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/34000-34099.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/34000-34099.xml index d700317556..a6d487bbca 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/34000-34099.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/34000-34099.xml @@ -180,7 +180,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -220,7 +220,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/34600-34699.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/34600-34699.xml index 40dcdd3ff4..0299245722 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/34600-34699.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/34600-34699.xml @@ -41,7 +41,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/35600-35699.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/35600-35699.xml index abf27e413b..dee16e2012 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/35600-35699.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/35600-35699.xml @@ -1423,7 +1423,7 @@ - + @@ -1443,7 +1443,7 @@ - + @@ -1463,7 +1463,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/35700-35799.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/35700-35799.xml index 21a546062e..5c7752a7c7 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/35700-35799.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/35700-35799.xml @@ -771,7 +771,7 @@ - + @@ -791,7 +791,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/35900-35999.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/35900-35999.xml index 3aab8a0c78..645836d6bb 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/35900-35999.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/35900-35999.xml @@ -475,7 +475,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/36000-36099.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/36000-36099.xml index b6ed02048b..63ed50ea95 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/36000-36099.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/36000-36099.xml @@ -377,7 +377,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/36200-36299.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/36200-36299.xml index 71f935e489..d46bdd1bc5 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/36200-36299.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/36200-36299.xml @@ -791,7 +791,7 @@ - + @@ -1079,7 +1079,7 @@ - + @@ -1096,7 +1096,7 @@ - + @@ -1113,7 +1113,7 @@ - + @@ -1130,7 +1130,7 @@ - + @@ -1146,7 +1146,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1210,7 +1210,7 @@ - + @@ -1247,7 +1247,7 @@ - + @@ -1265,7 +1265,7 @@ - + @@ -1283,7 +1283,7 @@ - + @@ -1301,7 +1301,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/36300-36399.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/36300-36399.xml index 82656fc407..cbb57bf102 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/36300-36399.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/36300-36399.xml @@ -48,7 +48,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -80,7 +80,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -119,7 +119,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/37600-37699.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/37600-37699.xml index 712c92adca..bf81718c0b 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/37600-37699.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/37600-37699.xml @@ -1397,7 +1397,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/40000-40099.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/40000-40099.xml index 04c386a8c9..5c733e4f82 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/40000-40099.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/40000-40099.xml @@ -870,7 +870,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47300-47399.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47300-47399.xml index 5f9321cda6..d105949369 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47300-47399.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47300-47399.xml @@ -1187,7 +1187,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47400-47499.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47400-47499.xml index 65d4f6321e..f8730b0828 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47400-47499.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47400-47499.xml @@ -51,7 +51,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -442,7 +442,7 @@ - + @@ -473,7 +473,7 @@ - + @@ -502,7 +502,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47500-47599.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47500-47599.xml index 1b2c547800..6be31a9b38 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47500-47599.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47500-47599.xml @@ -539,7 +539,7 @@ - + @@ -552,7 +552,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47600-47699.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47600-47699.xml index add254737f..0a481a30e4 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47600-47699.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47600-47699.xml @@ -652,7 +652,7 @@ - + @@ -668,7 +668,7 @@ - + @@ -684,7 +684,7 @@ - + @@ -700,7 +700,7 @@ - + @@ -716,7 +716,7 @@ - + @@ -743,7 +743,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -779,7 +779,7 @@ - + @@ -797,7 +797,7 @@ - + @@ -883,7 +883,7 @@ - + @@ -904,7 +904,7 @@ - + @@ -922,7 +922,7 @@ - + @@ -943,7 +943,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47700-47799.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47700-47799.xml index b8ac5adb5b..f1c7fc6612 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47700-47799.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/47700-47799.xml @@ -500,7 +500,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -538,7 +538,7 @@ - + @@ -558,7 +558,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48000-48099.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48000-48099.xml index 3d283c3db3..1ab9f2a310 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48000-48099.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48000-48099.xml @@ -154,7 +154,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48100-48199.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48100-48199.xml index 4e294ec17e..895212ac35 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48100-48199.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48100-48199.xml @@ -931,7 +931,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48200-48299.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48200-48299.xml index d2f80e9b4f..231cccd667 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48200-48299.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48200-48299.xml @@ -1191,7 +1191,7 @@ - + @@ -1205,7 +1205,7 @@ - + @@ -1242,7 +1242,7 @@ - + @@ -1258,7 +1258,7 @@ - + @@ -1360,7 +1360,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48400-48499.xml b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48400-48499.xml index c6b667da7d..ed8af516de 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48400-48499.xml +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/stats/items/48400-48499.xml @@ -143,7 +143,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -1318,7 +1318,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/items.xsd b/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/items.xsd index 2aac0e0dff..93203f306d 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_05.0_Salvation/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_05.0_Salvation/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_05.0_Salvation/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_05.0_Salvation/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_05.0_Salvation/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_05.0_Salvation/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/GameServer.java index c38066dfa0..b07ae869b9 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/GameServer.java @@ -71,7 +71,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemHPBonusData; import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -393,8 +392,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/Shutdown.java index 694e0b9df2..58c33cb501 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/Shutdown.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.BotReportTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -452,8 +451,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 7f7f8c882d..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SEC); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_6_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANT_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MIN_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { - resetDailyMissionRewards(); + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); - onResetAttendanceRewards(); + resetDailyMissionRewards(); + resetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -82,8 +102,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -101,8 +120,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -143,12 +203,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -253,7 +312,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index adf248315c..215d8049b3 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java index 6d05859f20..64fca5c362 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5046,15 +5046,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Summon.java index 919cda941e..6115effc29 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 7d4e15bdad..9fd5e4bf1b 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -128,7 +128,6 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -181,7 +180,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -189,7 +187,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -218,7 +215,6 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MonsterBookCardHolder; import org.l2jmobius.gameserver.model.holders.MonsterBookRewardHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.RecipeHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; @@ -693,10 +689,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -727,7 +719,9 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnSoloEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -854,7 +848,7 @@ public class PlayerInstance extends Playable // Shared dualclass skills. private static final String KNOWN_DUAL_SKILLS_VAR = "KNOWN_DUAL_SKILLS"; - private static final int[] DUAL_CLASS_SKILLS = new int[] + private static final int[] DUAL_CLASS_SKILLS = { 19222, // Dignity of the Exalted 19223, // Belief of the Exalted @@ -2923,11 +2917,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4850,10 +4840,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5017,7 +5003,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5343,7 +5329,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8102,7 +8088,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8163,22 +8149,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return isOnSoloEvent() || (getTeam() != attacker.getTeam()); } // Check if the attacker is a Playable @@ -9361,12 +9338,7 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) - { - _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; - return false; - } - if (isOnEvent()) // custom event message + if (_inOlympiadMode || isRegisteredOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11150,12 +11122,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -13022,16 +12988,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13130,21 +13086,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13204,13 +13145,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13224,66 +13158,50 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; + } + + public boolean isOnSoloEvent() + { + return _isOnSoloEvent; + } + + public void setOnSoloEvent(boolean value) + { + _isOnSoloEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13836,63 +13754,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index 3dfa329ab2..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,702 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.enums.QuestSound; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.quest.QuestState; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - - // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player == null) - { - continue; - } - final QuestState qs = player.getQuestState("Q10813_ForGlory"); - final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); - if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId()) >= Config.EXALTED_FOR_GLORY_ITEM_MAX.getCount()) - { - qs.setCond(2, true); - } - } - else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId()) >= Config.EXALTED_FOR_HONOR_ITEM_MAX.getCount()) - { - qs1.setCond(2, true); - } - } - } - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SEC); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SEC_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 0b10e75f59..94eee3bae6 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java index fb0f2bb3da..06efad6874 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java @@ -18,7 +18,7 @@ package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; import java.util.List; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; @@ -27,21 +27,21 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; */ public class OnCeremonyOfChaosMatchResult implements IBaseEvent { - private final List _winners; - private final List _members; + private final List _winners; + private final List _members; - public OnCeremonyOfChaosMatchResult(List winners, List members) + public OnCeremonyOfChaosMatchResult(List winners, List members) { _winners = winners; _members = members; } - public List getWinners() + public List getWinners() { return _winners; } - public List getMembers() + public List getMembers() { return _members; } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 94daf70345..aa1db36f5a 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MIN_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANT_ZONE); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/items/Item.java index edc729883d..7fae2e7cce 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -147,7 +146,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -220,7 +219,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -862,9 +861,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -939,11 +938,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index d22b61753b..d92af66d81 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 846bf80d2f..b22329e212 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 0ae327a509..0b6bb07861 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -45,7 +45,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -425,11 +424,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 4dbe8e91de..2baaad0914 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java index 4bdb81ff87..35fc8e1620 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillTreeData; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -95,12 +94,12 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket player.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java index ebce100c73..dc4e0434d4 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java @@ -23,7 +23,6 @@ import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.enums.SkillFinishType; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -64,12 +63,12 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket client.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { client.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java index 59820f678b..6bf3d99a16 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,15 +42,15 @@ public class RequestCancelCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HR_FOR_5_MIN_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } + // if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HR_FOR_5_MIN_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); + // player.sendPacket(ExCuriousHouseState.IDLE_PACKET); + // + // if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) + // { + // player.prohibiteCeremonyOfChaos(); + // } + // } } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java index a4e6f04627..c9e0872ac9 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; /** * @author Sdw @@ -46,21 +42,21 @@ public class RequestCuriousHouseHtml implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) + // { + // final NpcHtmlMessage message = new NpcHtmlMessage(0); + // message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); + // player.sendPacket(message); + // } } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java index b93ad8cf15..a465a57c06 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,25 +42,25 @@ public class RequestJoinCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MIN_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MIN_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); + // player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); + // player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); + // } + // else + // { + // player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); + // } } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 8871f7a5a0..616896b483 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -265,7 +261,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java index d26eee8d89..7c74a35616 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java @@ -20,7 +20,6 @@ import java.util.Collection; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -31,9 +30,9 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket { private final int _id; private final int _maxPlayers; - private final Collection _players; + private final Collection _players; - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) + public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) { _id = id; _maxPlayers = maxPlayers; @@ -48,25 +47,14 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket packet.writeD(_id); packet.writeD(_maxPlayers); packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) + for (PlayerInstance player : _players) { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getMaxHp()); + packet.writeD(player.getMaxCp()); + packet.writeD((int) player.getCurrentHp()); + packet.writeD((int) player.getCurrentCp()); } return true; } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java index 1f09c4de0d..27605b732b 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java @@ -16,10 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; +import java.util.Collection; + import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -29,30 +30,30 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; public class ExCuriousHouseResult implements IClientOutgoingPacket { private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; + private final Collection _players; - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) + public ExCuriousHouseResult(CeremonyOfChaosResult result, Collection players) { _result = result; - _event = event; + _players = players; } @Override public boolean write(PacketWriter packet) { OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); + packet.writeD(0); // _event.getId() packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> + packet.writeD(_players.size()); // CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + packet.writeD(_players.size()); + for (PlayerInstance player : _players) { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getClassId().getId()); + packet.writeD(0x00); // getLifeTime + packet.writeD(0x00); // getScore + } return true; } } diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_05.5_EtinasFate/.classpath b/L2J_Mobius_05.5_EtinasFate/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_05.5_EtinasFate/.classpath +++ b/L2J_Mobius_05.5_EtinasFate/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/config/AdminCommands.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/config/AdminCommands.xml index 2bc10f119f..0b241388aa 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/config/AdminCommands.xml @@ -256,32 +256,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/CeremonyOfChaos.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/CeremonyOfChaos.xml deleted file mode 100644 index 7331135977..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/CeremonyOfChaos.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - 224 - 225 - 226 - 227 - - - - - - - Ceremony of Chaos has ended. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - start - end - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index 087cf3ce1a..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/Elpies.txt b/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/Rabbits.txt b/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/Race.txt b/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_05.5_EtinasFate/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_05.5_EtinasFate/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index c238f3e148..32c30a80f5 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -155,7 +155,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -190,7 +190,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -248,7 +248,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -298,7 +298,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java index 92f5f478a9..848e1d690e 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java @@ -19,7 +19,6 @@ package ai.others.LaVieEnRose; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -128,13 +127,7 @@ public class LaVieEnRose extends AbstractNpcAI return false; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_USE_THE_BEAUTY_SHOP_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - return false; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot use the Beauty Shop while registered in an event."); return false; diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java index 4a0dbcb84f..04ee601406 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java @@ -334,9 +334,9 @@ public class OlyManager extends AbstractNpcAI implements IBypassHandler player.sendPacket(SystemMessageId.THE_OLYMPIAD_GAMES_ARE_NOT_CURRENTLY_IN_PROGRESS); return false; } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { - player.sendMessage("You can not observe games while registered on an event"); + player.sendMessage("You can not observe games while registered on an event."); return false; } else diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java index a3c74220a9..3afbd5674c 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; @@ -266,11 +265,7 @@ public class TrainingCamp extends AbstractNpcAI { return false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. { return false; } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 9ad4e3bb0c..a696d73a9b 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -145,7 +145,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -170,13 +170,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -225,7 +225,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -262,6 +262,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -452,7 +453,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -479,7 +480,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -532,7 +533,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -579,7 +580,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -606,7 +607,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -637,7 +638,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -724,7 +725,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -776,7 +777,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -881,7 +882,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/MasterHandler.java index 55bad5a1b8..c8d35a96df 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -144,7 +143,6 @@ import handlers.bypasshandlers.ChangePlayerName; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -412,7 +410,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -482,7 +479,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java index 95af1dea6b..f075754123 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java @@ -99,7 +99,7 @@ public class SkillConditionMasterHandler SkillConditionHandler.getInstance().registerHandler("OpNeedSummonOrPet", OpNeedSummonOrPetSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotAffectedBySkill", OpNotAffectedBySkillSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotCursed", OpNotCursedSkillCondition::new); - SkillConditionHandler.getInstance().registerHandler("OpNotInCeremonyOfChaos", OpNotInCeremonyOfChaosSkillCondition::new); + SkillConditionHandler.getInstance().registerHandler("OpNotInEvent", OpNotInEventSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInPeacezone", OpNotInPeacezoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInstantzone", OpNotInstantzoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotOlympiad", OpNotOlympiadSkillCondition::new); diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/bypasshandlers/Observation.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/bypasshandlers/Observation.java index d22bb52414..1fa83903f2 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/bypasshandlers/Observation.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/bypasshandlers/Observation.java @@ -99,9 +99,9 @@ public class Observation implements IBypassHandler player.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_SIEGE_WITH_A_PET_OR_SERVITOR_SUMMONED); return false; } - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("Cannot use while current Event"); + player.sendMessage("Cannot use while registered on an event."); return false; } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java deleted file mode 100644 index b5cefc61cc..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.skillconditionhandlers; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.WorldObject; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.skills.ISkillCondition; -import org.l2jmobius.gameserver.model.skills.Skill; - -/** - * @author Mobius - */ -public class OpNotInCeremonyOfChaosSkillCondition implements ISkillCondition -{ - public OpNotInCeremonyOfChaosSkillCondition(StatSet params) - { - } - - @Override - public boolean canUse(Creature caster, Skill skill, WorldObject target) - { - return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)); - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java new file mode 100644 index 0000000000..8b23f3b8b5 --- /dev/null +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java @@ -0,0 +1,39 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package handlers.skillconditionhandlers; + +import org.l2jmobius.gameserver.model.StatSet; +import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.model.skills.ISkillCondition; +import org.l2jmobius.gameserver.model.skills.Skill; + +/** + * @author Mobius + */ +public class OpNotInEventSkillCondition implements ISkillCondition +{ + public OpNotInEventSkillCondition(StatSet params) + { + } + + @Override + public boolean canUse(Creature caster, Skill skill, WorldObject target) + { + return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent()); + } +} diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java index 6ef0fa1dfd..ab21b5df1b 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java @@ -162,7 +162,7 @@ public class Q10813_ForGlory extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java index 86ea55caf9..0ea6ef37e1 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java @@ -169,7 +169,7 @@ public class Q10819_ForHonor extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/00000-00099.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/00000-00099.xml index ce210a8af6..8b393f2e82 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/00000-00099.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/00000-00099.xml @@ -1155,7 +1155,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/00700-00799.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/00700-00799.xml index ab1258a2fb..a1e991ac2b 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/00700-00799.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/00700-00799.xml @@ -393,7 +393,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -436,7 +436,7 @@ - + @@ -452,7 +452,7 @@ - + @@ -491,7 +491,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -537,7 +537,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -615,7 +615,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/00900-00999.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/00900-00999.xml index a5fad3ce93..698bfaa041 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/00900-00999.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/00900-00999.xml @@ -728,7 +728,7 @@ - + @@ -746,7 +746,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -788,7 +788,7 @@ - + @@ -806,7 +806,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -833,7 +833,7 @@ - + @@ -848,7 +848,7 @@ - + @@ -866,7 +866,7 @@ - + @@ -881,7 +881,7 @@ - + @@ -893,7 +893,7 @@ - + @@ -908,7 +908,7 @@ - + @@ -926,7 +926,7 @@ - + @@ -941,7 +941,7 @@ - + @@ -953,7 +953,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/01000-01099.xml index 376059b37f..fc841aa214 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/01000-01099.xml @@ -700,7 +700,7 @@ - + @@ -723,7 +723,7 @@ - + @@ -881,7 +881,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/01500-01599.xml index cbee353543..dd6f929d62 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/05200-05299.xml index bbc7782d7e..51bf4722e7 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/05200-05299.xml @@ -486,7 +486,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -528,7 +528,7 @@ - + @@ -549,7 +549,7 @@ - + @@ -570,7 +570,7 @@ - + @@ -591,7 +591,7 @@ - + @@ -612,7 +612,7 @@ - + @@ -633,7 +633,7 @@ - + @@ -654,7 +654,7 @@ - + @@ -675,7 +675,7 @@ - + @@ -696,7 +696,7 @@ - + @@ -717,7 +717,7 @@ - + @@ -738,7 +738,7 @@ - + @@ -759,7 +759,7 @@ - + @@ -780,7 +780,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/05500-05599.xml index 38be5d2648..606bc10f08 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/05500-05599.xml @@ -1088,7 +1088,7 @@ - + @@ -1107,7 +1107,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/06400-06499.xml index 942adb3f66..9dc18fc4a7 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -135,7 +135,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08100-08199.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08100-08199.xml index 0c794359bd..dd3e45b8ef 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08100-08199.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08100-08199.xml @@ -2125,7 +2125,7 @@ - + @@ -2142,7 +2142,7 @@ - + @@ -2159,7 +2159,7 @@ - + @@ -2176,7 +2176,7 @@ - + @@ -2193,7 +2193,7 @@ - + @@ -2210,7 +2210,7 @@ - + @@ -2227,7 +2227,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08200-08299.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08200-08299.xml index ccb00473a9..1f9379aa9b 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08200-08299.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08200-08299.xml @@ -12,7 +12,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08600-08699.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08600-08699.xml index 094d148977..032e8583c6 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08600-08699.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08600-08699.xml @@ -374,7 +374,7 @@ - + @@ -512,7 +512,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -998,7 +998,7 @@ - + @@ -1014,7 +1014,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1046,7 +1046,7 @@ - + @@ -1062,7 +1062,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1094,7 +1094,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1126,7 +1126,7 @@ - + @@ -1142,7 +1142,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1174,7 +1174,7 @@ - + @@ -1190,7 +1190,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08700-08799.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08700-08799.xml index 54d042ec9e..bb9864bfd7 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08700-08799.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/08700-08799.xml @@ -1104,7 +1104,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/09200-09299.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/09200-09299.xml index 4cef9cd1f5..12162e47ab 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/09200-09299.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/09200-09299.xml @@ -116,7 +116,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/09700-09799.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/09700-09799.xml index d2a62b73c7..f13f9c2df8 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/09700-09799.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/09700-09799.xml @@ -46,7 +46,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/10100-10199.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/10100-10199.xml index 9d4a68b545..58d8e80821 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/10100-10199.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/10100-10199.xml @@ -1118,7 +1118,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/13000-13099.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/13000-13099.xml index 1ff5546e6f..d66f698c61 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/13000-13099.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/13000-13099.xml @@ -520,7 +520,7 @@ - + @@ -940,7 +940,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/13700-13799.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/13700-13799.xml index d897244f52..aa8adacfd2 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/13700-13799.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/13700-13799.xml @@ -821,7 +821,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/14600-14699.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/14600-14699.xml index 04fcdfd98a..27d6579113 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/14600-14699.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/14600-14699.xml @@ -1802,7 +1802,7 @@ - + @@ -1935,7 +1935,7 @@ - + @@ -2051,7 +2051,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/14700-14799.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/14700-14799.xml index fa693178d9..b49ff3c715 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/14700-14799.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/14700-14799.xml @@ -13,7 +13,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/17000-17099.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/17000-17099.xml index ded835b7af..b34088bf54 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/17000-17099.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/17000-17099.xml @@ -97,7 +97,7 @@ - + @@ -352,7 +352,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/20300-20399.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/20300-20399.xml index e362291a9d..94549c306c 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/20300-20399.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/20300-20399.xml @@ -988,7 +988,7 @@ - + @@ -1104,7 +1104,7 @@ - + @@ -1220,7 +1220,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/21000-21099.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/21000-21099.xml index 8f9aa28b2b..8a737faf42 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/21000-21099.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/21000-21099.xml @@ -686,7 +686,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -786,7 +786,7 @@ - + @@ -808,7 +808,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/21100-21199.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/21100-21199.xml index 79c153775e..9837220c28 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/21100-21199.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/21100-21199.xml @@ -1575,7 +1575,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/21200-21299.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/21200-21299.xml index 03c6549a00..fe2ab73569 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/21200-21299.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/21200-21299.xml @@ -207,7 +207,7 @@ - + @@ -802,7 +802,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -870,7 +870,7 @@ - + @@ -889,7 +889,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/22000-22099.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/22000-22099.xml index 503b70cf9f..736f16217a 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/22000-22099.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/22000-22099.xml @@ -449,7 +449,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -737,7 +737,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/22500-22599.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/22500-22599.xml index 13c48eb153..2fe40a9271 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/22500-22599.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/22500-22599.xml @@ -1030,7 +1030,7 @@ - + @@ -1050,7 +1050,7 @@ - + @@ -1070,7 +1070,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/22600-22699.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/22600-22699.xml index b0bf526005..09553c1d73 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/22600-22699.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/22600-22699.xml @@ -430,7 +430,7 @@ - + @@ -453,7 +453,7 @@ - + @@ -476,7 +476,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23200-23299.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23200-23299.xml index d98c556304..c842bd020f 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23200-23299.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23200-23299.xml @@ -163,7 +163,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -562,7 +562,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -590,7 +590,7 @@ - + @@ -608,7 +608,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23300-23399.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23300-23399.xml index dcf4ee260e..dd94e99da6 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23300-23399.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23300-23399.xml @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23400-23499.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23400-23499.xml index 0375699dd5..c378edea96 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23400-23499.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23400-23499.xml @@ -1092,7 +1092,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1164,7 +1164,7 @@ - + @@ -1426,7 +1426,7 @@ - + @@ -1442,7 +1442,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23500-23599.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23500-23599.xml index e8f001c7e3..e01c98038e 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23500-23599.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23500-23599.xml @@ -93,7 +93,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23600-23699.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23600-23699.xml index b069931eaa..9f4b69233a 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23600-23699.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/23600-23699.xml @@ -189,7 +189,7 @@ - + @@ -566,7 +566,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/28500-28599.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/28500-28599.xml index d6d1760353..90fa8240b7 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/28500-28599.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/28500-28599.xml @@ -43,7 +43,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/30300-30399.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/30300-30399.xml index db57509bc1..5796ab6fd6 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/30300-30399.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/30300-30399.xml @@ -984,7 +984,7 @@ - + @@ -1008,7 +1008,7 @@ - + @@ -1032,7 +1032,7 @@ - + @@ -1052,7 +1052,7 @@ - + @@ -1075,7 +1075,7 @@ - + @@ -1098,7 +1098,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/34000-34099.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/34000-34099.xml index c3ceb38704..9749775bd1 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/34000-34099.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/34000-34099.xml @@ -180,7 +180,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -220,7 +220,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/34600-34699.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/34600-34699.xml index 199c358ccf..cbe7a05ff7 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/34600-34699.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/34600-34699.xml @@ -41,7 +41,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/35600-35699.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/35600-35699.xml index 01eca0a372..ca9c3b4c78 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/35600-35699.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/35600-35699.xml @@ -1423,7 +1423,7 @@ - + @@ -1443,7 +1443,7 @@ - + @@ -1463,7 +1463,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/35700-35799.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/35700-35799.xml index ef20795b0f..07148cfc66 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/35700-35799.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/35700-35799.xml @@ -771,7 +771,7 @@ - + @@ -791,7 +791,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/35900-35999.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/35900-35999.xml index e002281323..00d87c81c3 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/35900-35999.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/35900-35999.xml @@ -475,7 +475,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/36000-36099.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/36000-36099.xml index d6a3bcacb5..3e7767ba99 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/36000-36099.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/36000-36099.xml @@ -377,7 +377,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/36200-36299.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/36200-36299.xml index 05e951e8a9..b5e5d48977 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/36200-36299.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/36200-36299.xml @@ -791,7 +791,7 @@ - + @@ -1079,7 +1079,7 @@ - + @@ -1096,7 +1096,7 @@ - + @@ -1113,7 +1113,7 @@ - + @@ -1130,7 +1130,7 @@ - + @@ -1146,7 +1146,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1210,7 +1210,7 @@ - + @@ -1247,7 +1247,7 @@ - + @@ -1265,7 +1265,7 @@ - + @@ -1283,7 +1283,7 @@ - + @@ -1301,7 +1301,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/36300-36399.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/36300-36399.xml index 59f8665f9b..26da3daf62 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/36300-36399.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/36300-36399.xml @@ -48,7 +48,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -80,7 +80,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -119,7 +119,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/37600-37699.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/37600-37699.xml index 7115ced78e..b4faf3eab3 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/37600-37699.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/37600-37699.xml @@ -1397,7 +1397,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/37800-37899.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/37800-37899.xml index b9da108b92..13009b6d11 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/37800-37899.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/37800-37899.xml @@ -789,7 +789,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/40000-40099.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/40000-40099.xml index 5b30bc0ac2..858c8fe107 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/40000-40099.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/40000-40099.xml @@ -870,7 +870,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47300-47399.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47300-47399.xml index b5d58c840a..4ac2d0d7b0 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47300-47399.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47300-47399.xml @@ -1187,7 +1187,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47400-47499.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47400-47499.xml index aae5c12bc1..88601c974b 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47400-47499.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47400-47499.xml @@ -51,7 +51,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -441,7 +441,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -501,7 +501,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47500-47599.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47500-47599.xml index 9de512cd1e..3404764823 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47500-47599.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47500-47599.xml @@ -556,7 +556,7 @@ - + @@ -569,7 +569,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47600-47699.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47600-47699.xml index 24acd03bfb..51b67305b6 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47600-47699.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47600-47699.xml @@ -649,7 +649,7 @@ - + @@ -665,7 +665,7 @@ - + @@ -681,7 +681,7 @@ - + @@ -697,7 +697,7 @@ - + @@ -713,7 +713,7 @@ - + @@ -740,7 +740,7 @@ - + @@ -758,7 +758,7 @@ - + @@ -776,7 +776,7 @@ - + @@ -794,7 +794,7 @@ - + @@ -880,7 +880,7 @@ - + @@ -901,7 +901,7 @@ - + @@ -919,7 +919,7 @@ - + @@ -940,7 +940,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47700-47799.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47700-47799.xml index f0f2d7becb..ca62adb81c 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47700-47799.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/47700-47799.xml @@ -500,7 +500,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -538,7 +538,7 @@ - + @@ -558,7 +558,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48000-48099.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48000-48099.xml index c24c4a84c9..8ce78e5bcb 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48000-48099.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48000-48099.xml @@ -154,7 +154,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48100-48199.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48100-48199.xml index 98d074df4d..f0f7a59188 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48100-48199.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48100-48199.xml @@ -931,7 +931,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48200-48299.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48200-48299.xml index 35cf752f55..7cca097f75 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48200-48299.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48200-48299.xml @@ -1191,7 +1191,7 @@ - + @@ -1205,7 +1205,7 @@ - + @@ -1242,7 +1242,7 @@ - + @@ -1258,7 +1258,7 @@ - + @@ -1360,7 +1360,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48400-48499.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48400-48499.xml index 46c901fb7d..1271032dba 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48400-48499.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48400-48499.xml @@ -143,7 +143,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -1318,7 +1318,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48500-48599.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48500-48599.xml index 2aa72e817f..eeaa78313b 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48500-48599.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48500-48599.xml @@ -402,7 +402,7 @@ - + @@ -417,7 +417,7 @@ - + @@ -432,7 +432,7 @@ - + @@ -446,7 +446,7 @@ - + @@ -539,7 +539,7 @@ - + @@ -584,7 +584,7 @@ - + @@ -623,7 +623,7 @@ - + @@ -660,7 +660,7 @@ - + @@ -697,7 +697,7 @@ - + @@ -735,7 +735,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -812,7 +812,7 @@ - + @@ -850,7 +850,7 @@ - + @@ -889,7 +889,7 @@ - + @@ -927,7 +927,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -1005,7 +1005,7 @@ - + @@ -1041,7 +1041,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1121,7 +1121,7 @@ - + @@ -1136,7 +1136,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48600-48699.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48600-48699.xml index 0f31853552..d7f99dff92 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48600-48699.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48600-48699.xml @@ -963,7 +963,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48800-48899.xml b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48800-48899.xml index 0d5ae0ec53..6eedbf3555 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48800-48899.xml +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/stats/items/48800-48899.xml @@ -393,7 +393,7 @@ - + @@ -583,7 +583,7 @@ - + @@ -620,7 +620,7 @@ - + @@ -641,7 +641,7 @@ - + @@ -658,7 +658,7 @@ - + @@ -753,7 +753,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/items.xsd b/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/items.xsd index 631f046d33..8ade9975dd 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_05.5_EtinasFate/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_05.5_EtinasFate/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_05.5_EtinasFate/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_05.5_EtinasFate/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_05.5_EtinasFate/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/GameServer.java index c38066dfa0..b07ae869b9 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/GameServer.java @@ -71,7 +71,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemHPBonusData; import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -393,8 +392,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/Shutdown.java index 9e0bc3126c..02419a263c 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/Shutdown.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.BotReportTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -452,8 +451,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 4030465ecc..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.NOT_ENOUGH_SPACE_IN_THE_INVENTORY_UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_6_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANT_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { - resetDailyMissionRewards(); + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); - onResetAttendanceRewards(); + resetDailyMissionRewards(); + resetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -82,8 +102,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -101,8 +120,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -143,12 +203,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -253,7 +312,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index b8c6dd4354..1caec8603d 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java index 6d05859f20..64fca5c362 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5046,15 +5046,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Summon.java index 919cda941e..6115effc29 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index d843d7f932..19763cde6b 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -128,7 +128,6 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -181,7 +180,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -189,7 +187,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -218,7 +215,6 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MonsterBookCardHolder; import org.l2jmobius.gameserver.model.holders.MonsterBookRewardHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.RecipeHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; @@ -693,10 +689,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -727,7 +719,9 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnSoloEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -854,7 +848,7 @@ public class PlayerInstance extends Playable // Shared dualclass skills. private static final String KNOWN_DUAL_SKILLS_VAR = "KNOWN_DUAL_SKILLS"; - private static final int[] DUAL_CLASS_SKILLS = new int[] + private static final int[] DUAL_CLASS_SKILLS = { 19222, // Dignity of the Exalted 19223, // Belief of the Exalted @@ -2923,11 +2917,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4850,10 +4840,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5017,7 +5003,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5343,7 +5329,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8102,7 +8088,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8163,22 +8149,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return isOnSoloEvent() || (getTeam() != attacker.getTeam()); } // Check if the attacker is a Playable @@ -9361,12 +9338,7 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) - { - _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; - return false; - } - if (isOnEvent()) // custom event message + if (_inOlympiadMode || isRegisteredOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11153,12 +11125,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -13025,16 +12991,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13133,21 +13089,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13207,13 +13148,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13227,66 +13161,50 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; + } + + public boolean isOnSoloEvent() + { + return _isOnSoloEvent; + } + + public void setOnSoloEvent(boolean value) + { + _isOnSoloEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13839,63 +13757,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index dc9069975f..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,702 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.enums.QuestSound; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.quest.QuestState; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - - // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player == null) - { - continue; - } - final QuestState qs = player.getQuestState("Q10813_ForGlory"); - final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); - if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId()) >= Config.EXALTED_FOR_GLORY_ITEM_MAX.getCount()) - { - qs.setCond(2, true); - } - } - else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId()) >= Config.EXALTED_FOR_HONOR_ITEM_MAX.getCount()) - { - qs1.setCond(2, true); - } - } - } - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 0b10e75f59..94eee3bae6 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java index fb0f2bb3da..06efad6874 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java @@ -18,7 +18,7 @@ package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; import java.util.List; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; @@ -27,21 +27,21 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; */ public class OnCeremonyOfChaosMatchResult implements IBaseEvent { - private final List _winners; - private final List _members; + private final List _winners; + private final List _members; - public OnCeremonyOfChaosMatchResult(List winners, List members) + public OnCeremonyOfChaosMatchResult(List winners, List members) { _winners = winners; _members = members; } - public List getWinners() + public List getWinners() { return _winners; } - public List getMembers() + public List getMembers() { return _members; } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index b323a33915..29cce0c911 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANT_ZONE); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/Item.java index e55815b751..f46db57cad 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -149,7 +148,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -224,7 +223,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -867,9 +866,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -944,11 +943,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 934a9a4346..404b05b2be 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 846bf80d2f..b22329e212 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 7b69b68d0b..506cdcdda4 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -45,7 +45,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -425,11 +424,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5154368eb9..4b61f82ce4 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java index 4bdb81ff87..35fc8e1620 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillTreeData; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -95,12 +94,12 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket player.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java index ebce100c73..dc4e0434d4 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java @@ -23,7 +23,6 @@ import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.enums.SkillFinishType; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -64,12 +63,12 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket client.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { client.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java index ce871f6a18..88a7ec13b1 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,15 +42,15 @@ public class RequestCancelCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } + // if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); + // player.sendPacket(ExCuriousHouseState.IDLE_PACKET); + // + // if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) + // { + // player.prohibiteCeremonyOfChaos(); + // } + // } } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java index a4e6f04627..c9e0872ac9 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; /** * @author Sdw @@ -46,21 +42,21 @@ public class RequestCuriousHouseHtml implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) + // { + // final NpcHtmlMessage message = new NpcHtmlMessage(0); + // message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); + // player.sendPacket(message); + // } } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java index 33ca3d7b33..9fd38f3805 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,25 +42,25 @@ public class RequestJoinCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); + // player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); + // player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); + // } + // else + // { + // player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); + // } } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index e8d873b0df..ed2206a908 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -265,7 +261,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java index d26eee8d89..7c74a35616 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java @@ -20,7 +20,6 @@ import java.util.Collection; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -31,9 +30,9 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket { private final int _id; private final int _maxPlayers; - private final Collection _players; + private final Collection _players; - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) + public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) { _id = id; _maxPlayers = maxPlayers; @@ -48,25 +47,14 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket packet.writeD(_id); packet.writeD(_maxPlayers); packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) + for (PlayerInstance player : _players) { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getMaxHp()); + packet.writeD(player.getMaxCp()); + packet.writeD((int) player.getCurrentHp()); + packet.writeD((int) player.getCurrentCp()); } return true; } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java index 1f09c4de0d..27605b732b 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java @@ -16,10 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; +import java.util.Collection; + import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -29,30 +30,30 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; public class ExCuriousHouseResult implements IClientOutgoingPacket { private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; + private final Collection _players; - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) + public ExCuriousHouseResult(CeremonyOfChaosResult result, Collection players) { _result = result; - _event = event; + _players = players; } @Override public boolean write(PacketWriter packet) { OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); + packet.writeD(0); // _event.getId() packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> + packet.writeD(_players.size()); // CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + packet.writeD(_players.size()); + for (PlayerInstance player : _players) { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getClassId().getId()); + packet.writeD(0x00); // getLifeTime + packet.writeD(0x00); // getScore + } return true; } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_06.0_Fafurion/.classpath b/L2J_Mobius_06.0_Fafurion/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_06.0_Fafurion/.classpath +++ b/L2J_Mobius_06.0_Fafurion/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/config/AdminCommands.xml b/L2J_Mobius_06.0_Fafurion/dist/game/config/AdminCommands.xml index 2bc10f119f..0b241388aa 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/config/AdminCommands.xml @@ -256,32 +256,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/CeremonyOfChaos.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/events/CeremonyOfChaos.xml deleted file mode 100644 index 7331135977..0000000000 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/CeremonyOfChaos.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - 224 - 225 - 226 - 227 - - - - - - - Ceremony of Chaos has ended. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - start - end - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index 087cf3ce1a..0000000000 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/Elpies.txt b/L2J_Mobius_06.0_Fafurion/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/Rabbits.txt b/L2J_Mobius_06.0_Fafurion/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/Race.txt b/L2J_Mobius_06.0_Fafurion/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_06.0_Fafurion/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_06.0_Fafurion/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_06.0_Fafurion/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index c238f3e148..32c30a80f5 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -155,7 +155,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -190,7 +190,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -248,7 +248,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -298,7 +298,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java index 92f5f478a9..848e1d690e 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java @@ -19,7 +19,6 @@ package ai.others.LaVieEnRose; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -128,13 +127,7 @@ public class LaVieEnRose extends AbstractNpcAI return false; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_USE_THE_BEAUTY_SHOP_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - return false; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot use the Beauty Shop while registered in an event."); return false; diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java index 4a0dbcb84f..04ee601406 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java @@ -334,9 +334,9 @@ public class OlyManager extends AbstractNpcAI implements IBypassHandler player.sendPacket(SystemMessageId.THE_OLYMPIAD_GAMES_ARE_NOT_CURRENTLY_IN_PROGRESS); return false; } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { - player.sendMessage("You can not observe games while registered on an event"); + player.sendMessage("You can not observe games while registered on an event."); return false; } else diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java index a3c74220a9..3afbd5674c 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; @@ -266,11 +265,7 @@ public class TrainingCamp extends AbstractNpcAI { return false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. { return false; } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 9ad4e3bb0c..a696d73a9b 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -145,7 +145,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -170,13 +170,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -225,7 +225,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -262,6 +262,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -452,7 +453,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -479,7 +480,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -532,7 +533,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -579,7 +580,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -606,7 +607,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -637,7 +638,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -724,7 +725,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -776,7 +777,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -881,7 +882,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/MasterHandler.java index 7541f21018..3746959db2 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -144,7 +143,6 @@ import handlers.bypasshandlers.ChangePlayerName; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -413,7 +411,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -483,7 +480,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java index 95af1dea6b..f075754123 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java @@ -99,7 +99,7 @@ public class SkillConditionMasterHandler SkillConditionHandler.getInstance().registerHandler("OpNeedSummonOrPet", OpNeedSummonOrPetSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotAffectedBySkill", OpNotAffectedBySkillSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotCursed", OpNotCursedSkillCondition::new); - SkillConditionHandler.getInstance().registerHandler("OpNotInCeremonyOfChaos", OpNotInCeremonyOfChaosSkillCondition::new); + SkillConditionHandler.getInstance().registerHandler("OpNotInEvent", OpNotInEventSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInPeacezone", OpNotInPeacezoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInstantzone", OpNotInstantzoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotOlympiad", OpNotOlympiadSkillCondition::new); diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/bypasshandlers/Observation.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/bypasshandlers/Observation.java index d22bb52414..1fa83903f2 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/bypasshandlers/Observation.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/bypasshandlers/Observation.java @@ -99,9 +99,9 @@ public class Observation implements IBypassHandler player.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_SIEGE_WITH_A_PET_OR_SERVITOR_SUMMONED); return false; } - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("Cannot use while current Event"); + player.sendMessage("Cannot use while registered on an event."); return false; } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java deleted file mode 100644 index b5cefc61cc..0000000000 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.skillconditionhandlers; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.WorldObject; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.skills.ISkillCondition; -import org.l2jmobius.gameserver.model.skills.Skill; - -/** - * @author Mobius - */ -public class OpNotInCeremonyOfChaosSkillCondition implements ISkillCondition -{ - public OpNotInCeremonyOfChaosSkillCondition(StatSet params) - { - } - - @Override - public boolean canUse(Creature caster, Skill skill, WorldObject target) - { - return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)); - } -} diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java new file mode 100644 index 0000000000..8b23f3b8b5 --- /dev/null +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java @@ -0,0 +1,39 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package handlers.skillconditionhandlers; + +import org.l2jmobius.gameserver.model.StatSet; +import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.model.skills.ISkillCondition; +import org.l2jmobius.gameserver.model.skills.Skill; + +/** + * @author Mobius + */ +public class OpNotInEventSkillCondition implements ISkillCondition +{ + public OpNotInEventSkillCondition(StatSet params) + { + } + + @Override + public boolean canUse(Creature caster, Skill skill, WorldObject target) + { + return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent()); + } +} diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java index 6ef0fa1dfd..ab21b5df1b 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java @@ -162,7 +162,7 @@ public class Q10813_ForGlory extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java index 86ea55caf9..0ea6ef37e1 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java @@ -169,7 +169,7 @@ public class Q10819_ForHonor extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/00000-00099.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/00000-00099.xml index 852597122c..441191ef90 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/00000-00099.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/00000-00099.xml @@ -1155,7 +1155,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/00700-00799.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/00700-00799.xml index b4dda418f4..900dba3660 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/00700-00799.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/00700-00799.xml @@ -393,7 +393,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -436,7 +436,7 @@ - + @@ -452,7 +452,7 @@ - + @@ -491,7 +491,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -537,7 +537,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -615,7 +615,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/00900-00999.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/00900-00999.xml index ec36002b09..a8e5944cd8 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/00900-00999.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/00900-00999.xml @@ -728,7 +728,7 @@ - + @@ -746,7 +746,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -788,7 +788,7 @@ - + @@ -806,7 +806,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -833,7 +833,7 @@ - + @@ -848,7 +848,7 @@ - + @@ -866,7 +866,7 @@ - + @@ -881,7 +881,7 @@ - + @@ -893,7 +893,7 @@ - + @@ -908,7 +908,7 @@ - + @@ -926,7 +926,7 @@ - + @@ -941,7 +941,7 @@ - + @@ -953,7 +953,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/01000-01099.xml index 376059b37f..fc841aa214 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/01000-01099.xml @@ -700,7 +700,7 @@ - + @@ -723,7 +723,7 @@ - + @@ -881,7 +881,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/01500-01599.xml index c5d838af17..d9075c0278 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/05200-05299.xml index bbc7782d7e..51bf4722e7 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/05200-05299.xml @@ -486,7 +486,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -528,7 +528,7 @@ - + @@ -549,7 +549,7 @@ - + @@ -570,7 +570,7 @@ - + @@ -591,7 +591,7 @@ - + @@ -612,7 +612,7 @@ - + @@ -633,7 +633,7 @@ - + @@ -654,7 +654,7 @@ - + @@ -675,7 +675,7 @@ - + @@ -696,7 +696,7 @@ - + @@ -717,7 +717,7 @@ - + @@ -738,7 +738,7 @@ - + @@ -759,7 +759,7 @@ - + @@ -780,7 +780,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/05500-05599.xml index 8039e9dd20..b59f41a105 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/05500-05599.xml @@ -1088,7 +1088,7 @@ - + @@ -1107,7 +1107,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/06400-06499.xml index 9e1f7ca327..962068d5af 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -135,7 +135,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08100-08199.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08100-08199.xml index 9e225656ff..d1009acb32 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08100-08199.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08100-08199.xml @@ -2125,7 +2125,7 @@ - + @@ -2142,7 +2142,7 @@ - + @@ -2159,7 +2159,7 @@ - + @@ -2176,7 +2176,7 @@ - + @@ -2193,7 +2193,7 @@ - + @@ -2210,7 +2210,7 @@ - + @@ -2227,7 +2227,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08200-08299.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08200-08299.xml index ccb00473a9..1f9379aa9b 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08200-08299.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08200-08299.xml @@ -12,7 +12,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08600-08699.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08600-08699.xml index 65f1a8d682..07e2cbd596 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08600-08699.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08600-08699.xml @@ -374,7 +374,7 @@ - + @@ -512,7 +512,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -998,7 +998,7 @@ - + @@ -1014,7 +1014,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1046,7 +1046,7 @@ - + @@ -1062,7 +1062,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1094,7 +1094,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1126,7 +1126,7 @@ - + @@ -1142,7 +1142,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1174,7 +1174,7 @@ - + @@ -1190,7 +1190,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08700-08799.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08700-08799.xml index e258601ece..ce98e59d6b 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08700-08799.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/08700-08799.xml @@ -1104,7 +1104,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/09200-09299.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/09200-09299.xml index a54d66190e..adece08f5e 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/09200-09299.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/09200-09299.xml @@ -116,7 +116,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/09700-09799.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/09700-09799.xml index 832f5c361d..3d962aa69a 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/09700-09799.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/09700-09799.xml @@ -46,7 +46,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/10100-10199.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/10100-10199.xml index f99b400c2f..9e671906ef 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/10100-10199.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/10100-10199.xml @@ -1118,7 +1118,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/13000-13099.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/13000-13099.xml index 9e3e7f6bed..19e4792934 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/13000-13099.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/13000-13099.xml @@ -520,7 +520,7 @@ - + @@ -940,7 +940,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/13700-13799.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/13700-13799.xml index 77efff4ba8..cc4fea7379 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/13700-13799.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/13700-13799.xml @@ -821,7 +821,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/14600-14699.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/14600-14699.xml index f69962e281..b353175d47 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/14600-14699.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/14600-14699.xml @@ -1802,7 +1802,7 @@ - + @@ -1935,7 +1935,7 @@ - + @@ -2051,7 +2051,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/14700-14799.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/14700-14799.xml index a3e941e58e..1d77ae1229 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/14700-14799.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/14700-14799.xml @@ -13,7 +13,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/17000-17099.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/17000-17099.xml index 577c9a04b3..ad4c0ee487 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/17000-17099.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/17000-17099.xml @@ -97,7 +97,7 @@ - + @@ -352,7 +352,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/20300-20399.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/20300-20399.xml index 3078c0f5cb..5794cf2651 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/20300-20399.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/20300-20399.xml @@ -988,7 +988,7 @@ - + @@ -1104,7 +1104,7 @@ - + @@ -1220,7 +1220,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/21000-21099.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/21000-21099.xml index 9486366425..f37705a602 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/21000-21099.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/21000-21099.xml @@ -686,7 +686,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -786,7 +786,7 @@ - + @@ -808,7 +808,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/21100-21199.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/21100-21199.xml index 1674df9cd6..b3c74373a9 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/21100-21199.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/21100-21199.xml @@ -1575,7 +1575,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/21200-21299.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/21200-21299.xml index 6096340c2f..9297cf0154 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/21200-21299.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/21200-21299.xml @@ -207,7 +207,7 @@ - + @@ -802,7 +802,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -870,7 +870,7 @@ - + @@ -889,7 +889,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/22000-22099.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/22000-22099.xml index 764088379c..eec4b1816f 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/22000-22099.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/22000-22099.xml @@ -449,7 +449,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -737,7 +737,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/22500-22599.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/22500-22599.xml index 97ffa8ee9b..d663c14673 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/22500-22599.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/22500-22599.xml @@ -1030,7 +1030,7 @@ - + @@ -1050,7 +1050,7 @@ - + @@ -1070,7 +1070,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/22600-22699.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/22600-22699.xml index fe798e0670..f2b3976d22 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/22600-22699.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/22600-22699.xml @@ -430,7 +430,7 @@ - + @@ -453,7 +453,7 @@ - + @@ -476,7 +476,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23200-23299.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23200-23299.xml index 0601e7a6dc..85d3f98a04 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23200-23299.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23200-23299.xml @@ -163,7 +163,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -562,7 +562,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -590,7 +590,7 @@ - + @@ -608,7 +608,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23300-23399.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23300-23399.xml index ec95a8c5dd..6ed7779086 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23300-23399.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23300-23399.xml @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23400-23499.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23400-23499.xml index b1e54237db..4242687569 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23400-23499.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23400-23499.xml @@ -1092,7 +1092,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1164,7 +1164,7 @@ - + @@ -1426,7 +1426,7 @@ - + @@ -1442,7 +1442,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23500-23599.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23500-23599.xml index d9b40d7f4e..152b6fb016 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23500-23599.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23500-23599.xml @@ -93,7 +93,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23600-23699.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23600-23699.xml index bed76ea37e..eecdcaced7 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23600-23699.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/23600-23699.xml @@ -189,7 +189,7 @@ - + @@ -566,7 +566,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/28500-28599.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/28500-28599.xml index 8f6a2d61ea..4534b1949d 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/28500-28599.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/28500-28599.xml @@ -43,7 +43,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/30300-30399.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/30300-30399.xml index e4963dd128..dc0e755510 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/30300-30399.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/30300-30399.xml @@ -984,7 +984,7 @@ - + @@ -1008,7 +1008,7 @@ - + @@ -1032,7 +1032,7 @@ - + @@ -1052,7 +1052,7 @@ - + @@ -1075,7 +1075,7 @@ - + @@ -1098,7 +1098,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/34000-34099.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/34000-34099.xml index 2f89319547..bba0cd869d 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/34000-34099.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/34000-34099.xml @@ -180,7 +180,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -220,7 +220,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/34600-34699.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/34600-34699.xml index 1615d04d5c..8d2ef73ce2 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/34600-34699.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/34600-34699.xml @@ -41,7 +41,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/35600-35699.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/35600-35699.xml index e7f1823fc6..5731fef7f8 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/35600-35699.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/35600-35699.xml @@ -1423,7 +1423,7 @@ - + @@ -1443,7 +1443,7 @@ - + @@ -1463,7 +1463,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/35700-35799.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/35700-35799.xml index 33850b0961..54e73a23d4 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/35700-35799.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/35700-35799.xml @@ -771,7 +771,7 @@ - + @@ -791,7 +791,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/35900-35999.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/35900-35999.xml index 21fcbc6906..27c008f491 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/35900-35999.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/35900-35999.xml @@ -475,7 +475,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/36000-36099.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/36000-36099.xml index bdce746699..bf65c9f4aa 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/36000-36099.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/36000-36099.xml @@ -377,7 +377,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/36200-36299.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/36200-36299.xml index acc326c217..f89ccee0a2 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/36200-36299.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/36200-36299.xml @@ -791,7 +791,7 @@ - + @@ -1079,7 +1079,7 @@ - + @@ -1096,7 +1096,7 @@ - + @@ -1113,7 +1113,7 @@ - + @@ -1130,7 +1130,7 @@ - + @@ -1146,7 +1146,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1210,7 +1210,7 @@ - + @@ -1247,7 +1247,7 @@ - + @@ -1265,7 +1265,7 @@ - + @@ -1283,7 +1283,7 @@ - + @@ -1301,7 +1301,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/36300-36399.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/36300-36399.xml index 4ea0f8508e..32b776b226 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/36300-36399.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/36300-36399.xml @@ -48,7 +48,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -80,7 +80,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -119,7 +119,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/37600-37699.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/37600-37699.xml index 378abf8668..6cbf3f7cb1 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/37600-37699.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/37600-37699.xml @@ -1397,7 +1397,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/37800-37899.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/37800-37899.xml index fa7c63d913..1e709171ef 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/37800-37899.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/37800-37899.xml @@ -789,7 +789,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/40000-40099.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/40000-40099.xml index 62f9a910b7..5790743a99 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/40000-40099.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/40000-40099.xml @@ -870,7 +870,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47300-47399.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47300-47399.xml index f9e9159e5b..5c79b78695 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47300-47399.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47300-47399.xml @@ -1187,7 +1187,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47400-47499.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47400-47499.xml index aee655929a..8fbbd011a1 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47400-47499.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47400-47499.xml @@ -51,7 +51,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -441,7 +441,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -501,7 +501,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47500-47599.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47500-47599.xml index 4d717c19a8..0bc7714a02 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47500-47599.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47500-47599.xml @@ -556,7 +556,7 @@ - + @@ -569,7 +569,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47600-47699.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47600-47699.xml index c12cc148a5..b9e7cf8ca9 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47600-47699.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47600-47699.xml @@ -649,7 +649,7 @@ - + @@ -665,7 +665,7 @@ - + @@ -681,7 +681,7 @@ - + @@ -697,7 +697,7 @@ - + @@ -713,7 +713,7 @@ - + @@ -740,7 +740,7 @@ - + @@ -758,7 +758,7 @@ - + @@ -776,7 +776,7 @@ - + @@ -794,7 +794,7 @@ - + @@ -880,7 +880,7 @@ - + @@ -901,7 +901,7 @@ - + @@ -919,7 +919,7 @@ - + @@ -940,7 +940,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47700-47799.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47700-47799.xml index 28e1ef9200..35eeeb7834 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47700-47799.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/47700-47799.xml @@ -500,7 +500,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -538,7 +538,7 @@ - + @@ -558,7 +558,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48000-48099.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48000-48099.xml index 3091b4f14e..bb3d781413 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48000-48099.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48000-48099.xml @@ -154,7 +154,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48100-48199.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48100-48199.xml index dc949581f9..7d35d2075b 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48100-48199.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48100-48199.xml @@ -931,7 +931,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48200-48299.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48200-48299.xml index b72c471217..8f84f1a8e8 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48200-48299.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48200-48299.xml @@ -1196,7 +1196,7 @@ - + @@ -1210,7 +1210,7 @@ - + @@ -1247,7 +1247,7 @@ - + @@ -1263,7 +1263,7 @@ - + @@ -1365,7 +1365,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48400-48499.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48400-48499.xml index 3522dc1eb7..06849d10f7 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48400-48499.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48400-48499.xml @@ -143,7 +143,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -1318,7 +1318,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48500-48599.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48500-48599.xml index 7d24ab3b7c..02e65f0d99 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48500-48599.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48500-48599.xml @@ -402,7 +402,7 @@ - + @@ -417,7 +417,7 @@ - + @@ -432,7 +432,7 @@ - + @@ -446,7 +446,7 @@ - + @@ -539,7 +539,7 @@ - + @@ -584,7 +584,7 @@ - + @@ -623,7 +623,7 @@ - + @@ -660,7 +660,7 @@ - + @@ -697,7 +697,7 @@ - + @@ -735,7 +735,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -812,7 +812,7 @@ - + @@ -850,7 +850,7 @@ - + @@ -889,7 +889,7 @@ - + @@ -927,7 +927,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -1005,7 +1005,7 @@ - + @@ -1041,7 +1041,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1121,7 +1121,7 @@ - + @@ -1136,7 +1136,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48600-48699.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48600-48699.xml index 0f31853552..d7f99dff92 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48600-48699.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48600-48699.xml @@ -963,7 +963,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48700-48799.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48700-48799.xml index bf8c0ae121..5c10d47e71 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48700-48799.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48700-48799.xml @@ -91,7 +91,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48800-48899.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48800-48899.xml index 6dd554fb72..9b40c56cef 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48800-48899.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/48800-48899.xml @@ -393,7 +393,7 @@ - + @@ -583,7 +583,7 @@ - + @@ -620,7 +620,7 @@ - + @@ -641,7 +641,7 @@ - + @@ -658,7 +658,7 @@ - + @@ -753,7 +753,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/80400-80499.xml b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/80400-80499.xml index be99e36cee..438124578a 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/80400-80499.xml +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/stats/items/80400-80499.xml @@ -538,7 +538,7 @@ - + @@ -556,7 +556,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/items.xsd b/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/items.xsd index 631f046d33..8ade9975dd 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_06.0_Fafurion/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_06.0_Fafurion/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_06.0_Fafurion/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_06.0_Fafurion/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_06.0_Fafurion/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_06.0_Fafurion/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/GameServer.java index d00f79ee37..3b86f15c29 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/GameServer.java @@ -72,7 +72,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; import org.l2jmobius.gameserver.data.xml.EquipmentUpgradeData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -395,8 +394,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/Shutdown.java index 9e0bc3126c..02419a263c 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/Shutdown.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.BotReportTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -452,8 +451,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 4030465ecc..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.NOT_ENOUGH_SPACE_IN_THE_INVENTORY_UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_6_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANT_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { - resetDailyMissionRewards(); + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); - onResetAttendanceRewards(); + resetDailyMissionRewards(); + resetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -82,8 +102,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -101,8 +120,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -143,12 +203,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -253,7 +312,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index b8c6dd4354..1caec8603d 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java index 6d05859f20..64fca5c362 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5046,15 +5046,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Summon.java index 919cda941e..6115effc29 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index a5675a63ec..839ffa2a81 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -128,7 +128,6 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -181,7 +180,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -189,7 +187,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -218,7 +215,6 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MonsterBookCardHolder; import org.l2jmobius.gameserver.model.holders.MonsterBookRewardHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.RecipeHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; @@ -693,10 +689,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -727,7 +719,9 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnSoloEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -854,7 +848,7 @@ public class PlayerInstance extends Playable // Shared dualclass skills. private static final String KNOWN_DUAL_SKILLS_VAR = "KNOWN_DUAL_SKILLS"; - private static final int[] DUAL_CLASS_SKILLS = new int[] + private static final int[] DUAL_CLASS_SKILLS = { 19222, // Dignity of the Exalted 19223, // Belief of the Exalted @@ -2924,11 +2918,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4851,10 +4841,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5018,7 +5004,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5344,7 +5330,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8103,7 +8089,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8164,22 +8150,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return isOnSoloEvent() || (getTeam() != attacker.getTeam()); } // Check if the attacker is a Playable @@ -9362,12 +9339,7 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) - { - _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; - return false; - } - if (isOnEvent()) // custom event message + if (_inOlympiadMode || isRegisteredOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11159,12 +11131,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -13031,16 +12997,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13139,21 +13095,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13213,13 +13154,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13233,66 +13167,50 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; + } + + public boolean isOnSoloEvent() + { + return _isOnSoloEvent; + } + + public void setOnSoloEvent(boolean value) + { + _isOnSoloEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13845,63 +13763,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index dc9069975f..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,702 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.enums.QuestSound; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.quest.QuestState; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - - // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player == null) - { - continue; - } - final QuestState qs = player.getQuestState("Q10813_ForGlory"); - final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); - if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId()) >= Config.EXALTED_FOR_GLORY_ITEM_MAX.getCount()) - { - qs.setCond(2, true); - } - } - else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId()) >= Config.EXALTED_FOR_HONOR_ITEM_MAX.getCount()) - { - qs1.setCond(2, true); - } - } - } - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 0b10e75f59..94eee3bae6 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java index fb0f2bb3da..06efad6874 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java @@ -18,7 +18,7 @@ package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; import java.util.List; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; @@ -27,21 +27,21 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; */ public class OnCeremonyOfChaosMatchResult implements IBaseEvent { - private final List _winners; - private final List _members; + private final List _winners; + private final List _members; - public OnCeremonyOfChaosMatchResult(List winners, List members) + public OnCeremonyOfChaosMatchResult(List winners, List members) { _winners = winners; _members = members; } - public List getWinners() + public List getWinners() { return _winners; } - public List getMembers() + public List getMembers() { return _members; } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index b323a33915..29cce0c911 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANT_ZONE); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/items/Item.java index 7a1819fabf..4667ed8eee 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -149,7 +148,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -224,7 +223,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -868,9 +867,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -945,11 +944,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 934a9a4346..404b05b2be 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 846bf80d2f..b22329e212 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 7b69b68d0b..506cdcdda4 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -45,7 +45,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -425,11 +424,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5154368eb9..4b61f82ce4 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java index 4bdb81ff87..35fc8e1620 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillTreeData; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -95,12 +94,12 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket player.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java index ebce100c73..dc4e0434d4 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java @@ -23,7 +23,6 @@ import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.enums.SkillFinishType; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -64,12 +63,12 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket client.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { client.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java index ce871f6a18..88a7ec13b1 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,15 +42,15 @@ public class RequestCancelCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } + // if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); + // player.sendPacket(ExCuriousHouseState.IDLE_PACKET); + // + // if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) + // { + // player.prohibiteCeremonyOfChaos(); + // } + // } } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java index a4e6f04627..c9e0872ac9 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; /** * @author Sdw @@ -46,21 +42,21 @@ public class RequestCuriousHouseHtml implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) + // { + // final NpcHtmlMessage message = new NpcHtmlMessage(0); + // message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); + // player.sendPacket(message); + // } } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java index 33ca3d7b33..9fd38f3805 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,25 +42,25 @@ public class RequestJoinCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); + // player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); + // player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); + // } + // else + // { + // player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); + // } } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index e8d873b0df..ed2206a908 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -265,7 +261,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java index d26eee8d89..7c74a35616 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java @@ -20,7 +20,6 @@ import java.util.Collection; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -31,9 +30,9 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket { private final int _id; private final int _maxPlayers; - private final Collection _players; + private final Collection _players; - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) + public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) { _id = id; _maxPlayers = maxPlayers; @@ -48,25 +47,14 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket packet.writeD(_id); packet.writeD(_maxPlayers); packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) + for (PlayerInstance player : _players) { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getMaxHp()); + packet.writeD(player.getMaxCp()); + packet.writeD((int) player.getCurrentHp()); + packet.writeD((int) player.getCurrentCp()); } return true; } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java index 1f09c4de0d..27605b732b 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java @@ -16,10 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; +import java.util.Collection; + import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -29,30 +30,30 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; public class ExCuriousHouseResult implements IClientOutgoingPacket { private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; + private final Collection _players; - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) + public ExCuriousHouseResult(CeremonyOfChaosResult result, Collection players) { _result = result; - _event = event; + _players = players; } @Override public boolean write(PacketWriter packet) { OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); + packet.writeD(0); // _event.getId() packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> + packet.writeD(_players.size()); // CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + packet.writeD(_players.size()); + for (PlayerInstance player : _players) { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getClassId().getId()); + packet.writeD(0x00); // getLifeTime + packet.writeD(0x00); // getScore + } return true; } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/.classpath b/L2J_Mobius_07.0_PreludeOfWar/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/.classpath +++ b/L2J_Mobius_07.0_PreludeOfWar/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/AdminCommands.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/AdminCommands.xml index 2bc10f119f..0b241388aa 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/AdminCommands.xml @@ -256,32 +256,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/CeremonyOfChaos.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/CeremonyOfChaos.xml deleted file mode 100644 index 7331135977..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/CeremonyOfChaos.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - 224 - 225 - 226 - 227 - - - - - - - Ceremony of Chaos has ended. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - start - end - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index 0b40abb9be..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/Elpies.txt b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/Rabbits.txt b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/Race.txt b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 670b26f133..c33f2c6553 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -155,7 +155,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -190,7 +190,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -248,7 +248,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -298,7 +298,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java index 92f5f478a9..848e1d690e 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java @@ -19,7 +19,6 @@ package ai.others.LaVieEnRose; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -128,13 +127,7 @@ public class LaVieEnRose extends AbstractNpcAI return false; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_USE_THE_BEAUTY_SHOP_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - return false; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot use the Beauty Shop while registered in an event."); return false; diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java index 4a0dbcb84f..04ee601406 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java @@ -334,9 +334,9 @@ public class OlyManager extends AbstractNpcAI implements IBypassHandler player.sendPacket(SystemMessageId.THE_OLYMPIAD_GAMES_ARE_NOT_CURRENTLY_IN_PROGRESS); return false; } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { - player.sendMessage("You can not observe games while registered on an event"); + player.sendMessage("You can not observe games while registered on an event."); return false; } else diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java index a3c74220a9..3afbd5674c 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; @@ -266,11 +265,7 @@ public class TrainingCamp extends AbstractNpcAI { return false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. { return false; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 9ad4e3bb0c..a696d73a9b 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -145,7 +145,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -170,13 +170,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -225,7 +225,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -262,6 +262,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -452,7 +453,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -479,7 +480,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -532,7 +533,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -579,7 +580,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -606,7 +607,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -637,7 +638,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -724,7 +725,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -776,7 +777,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -881,7 +882,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/MasterHandler.java index 7541f21018..3746959db2 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -144,7 +143,6 @@ import handlers.bypasshandlers.ChangePlayerName; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -413,7 +411,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -483,7 +480,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java index 95af1dea6b..f075754123 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java @@ -99,7 +99,7 @@ public class SkillConditionMasterHandler SkillConditionHandler.getInstance().registerHandler("OpNeedSummonOrPet", OpNeedSummonOrPetSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotAffectedBySkill", OpNotAffectedBySkillSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotCursed", OpNotCursedSkillCondition::new); - SkillConditionHandler.getInstance().registerHandler("OpNotInCeremonyOfChaos", OpNotInCeremonyOfChaosSkillCondition::new); + SkillConditionHandler.getInstance().registerHandler("OpNotInEvent", OpNotInEventSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInPeacezone", OpNotInPeacezoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInstantzone", OpNotInstantzoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotOlympiad", OpNotOlympiadSkillCondition::new); diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/bypasshandlers/Observation.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/bypasshandlers/Observation.java index d22bb52414..1fa83903f2 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/bypasshandlers/Observation.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/bypasshandlers/Observation.java @@ -99,9 +99,9 @@ public class Observation implements IBypassHandler player.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_SIEGE_WITH_A_PET_OR_SERVITOR_SUMMONED); return false; } - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("Cannot use while current Event"); + player.sendMessage("Cannot use while registered on an event."); return false; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java deleted file mode 100644 index b5cefc61cc..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.skillconditionhandlers; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.WorldObject; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.skills.ISkillCondition; -import org.l2jmobius.gameserver.model.skills.Skill; - -/** - * @author Mobius - */ -public class OpNotInCeremonyOfChaosSkillCondition implements ISkillCondition -{ - public OpNotInCeremonyOfChaosSkillCondition(StatSet params) - { - } - - @Override - public boolean canUse(Creature caster, Skill skill, WorldObject target) - { - return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)); - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java new file mode 100644 index 0000000000..8b23f3b8b5 --- /dev/null +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java @@ -0,0 +1,39 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package handlers.skillconditionhandlers; + +import org.l2jmobius.gameserver.model.StatSet; +import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.model.skills.ISkillCondition; +import org.l2jmobius.gameserver.model.skills.Skill; + +/** + * @author Mobius + */ +public class OpNotInEventSkillCondition implements ISkillCondition +{ + public OpNotInEventSkillCondition(StatSet params) + { + } + + @Override + public boolean canUse(Creature caster, Skill skill, WorldObject target) + { + return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent()); + } +} diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java index 223b4f673c..4a6d8ba9aa 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java @@ -163,7 +163,7 @@ public class Q10813_ForGlory extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java index 59f2cb0d38..3422c8d9a7 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java @@ -175,7 +175,7 @@ public class Q10819_ForHonor extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/quests/Q10825_ForVictory/Q10825_ForVictory.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/quests/Q10825_ForVictory/Q10825_ForVictory.java index 02f3f30086..08d001443a 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/quests/Q10825_ForVictory/Q10825_ForVictory.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/quests/Q10825_ForVictory/Q10825_ForVictory.java @@ -291,7 +291,7 @@ public class Q10825_ForVictory extends Quest @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) { - event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer())); + event.getMembers().forEach(player -> manageQuestProgress(player)); } @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT) diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/00000-00099.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/00000-00099.xml index 852597122c..441191ef90 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/00000-00099.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/00000-00099.xml @@ -1155,7 +1155,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/00700-00799.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/00700-00799.xml index b4dda418f4..900dba3660 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/00700-00799.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/00700-00799.xml @@ -393,7 +393,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -436,7 +436,7 @@ - + @@ -452,7 +452,7 @@ - + @@ -491,7 +491,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -537,7 +537,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -615,7 +615,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/00900-00999.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/00900-00999.xml index ec36002b09..a8e5944cd8 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/00900-00999.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/00900-00999.xml @@ -728,7 +728,7 @@ - + @@ -746,7 +746,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -788,7 +788,7 @@ - + @@ -806,7 +806,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -833,7 +833,7 @@ - + @@ -848,7 +848,7 @@ - + @@ -866,7 +866,7 @@ - + @@ -881,7 +881,7 @@ - + @@ -893,7 +893,7 @@ - + @@ -908,7 +908,7 @@ - + @@ -926,7 +926,7 @@ - + @@ -941,7 +941,7 @@ - + @@ -953,7 +953,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/01000-01099.xml index 376059b37f..fc841aa214 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/01000-01099.xml @@ -700,7 +700,7 @@ - + @@ -723,7 +723,7 @@ - + @@ -881,7 +881,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/01500-01599.xml index c5d838af17..d9075c0278 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/05200-05299.xml index bbc7782d7e..51bf4722e7 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/05200-05299.xml @@ -486,7 +486,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -528,7 +528,7 @@ - + @@ -549,7 +549,7 @@ - + @@ -570,7 +570,7 @@ - + @@ -591,7 +591,7 @@ - + @@ -612,7 +612,7 @@ - + @@ -633,7 +633,7 @@ - + @@ -654,7 +654,7 @@ - + @@ -675,7 +675,7 @@ - + @@ -696,7 +696,7 @@ - + @@ -717,7 +717,7 @@ - + @@ -738,7 +738,7 @@ - + @@ -759,7 +759,7 @@ - + @@ -780,7 +780,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/05500-05599.xml index 8039e9dd20..b59f41a105 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/05500-05599.xml @@ -1088,7 +1088,7 @@ - + @@ -1107,7 +1107,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/06400-06499.xml index 9e1f7ca327..962068d5af 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -135,7 +135,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08100-08199.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08100-08199.xml index 9e225656ff..d1009acb32 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08100-08199.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08100-08199.xml @@ -2125,7 +2125,7 @@ - + @@ -2142,7 +2142,7 @@ - + @@ -2159,7 +2159,7 @@ - + @@ -2176,7 +2176,7 @@ - + @@ -2193,7 +2193,7 @@ - + @@ -2210,7 +2210,7 @@ - + @@ -2227,7 +2227,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08200-08299.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08200-08299.xml index ccb00473a9..1f9379aa9b 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08200-08299.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08200-08299.xml @@ -12,7 +12,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08600-08699.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08600-08699.xml index 65f1a8d682..07e2cbd596 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08600-08699.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08600-08699.xml @@ -374,7 +374,7 @@ - + @@ -512,7 +512,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -998,7 +998,7 @@ - + @@ -1014,7 +1014,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1046,7 +1046,7 @@ - + @@ -1062,7 +1062,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1094,7 +1094,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1126,7 +1126,7 @@ - + @@ -1142,7 +1142,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1174,7 +1174,7 @@ - + @@ -1190,7 +1190,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08700-08799.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08700-08799.xml index e258601ece..ce98e59d6b 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08700-08799.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/08700-08799.xml @@ -1104,7 +1104,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/09200-09299.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/09200-09299.xml index a54d66190e..adece08f5e 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/09200-09299.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/09200-09299.xml @@ -116,7 +116,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/09700-09799.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/09700-09799.xml index 832f5c361d..3d962aa69a 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/09700-09799.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/09700-09799.xml @@ -46,7 +46,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/10100-10199.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/10100-10199.xml index f99b400c2f..9e671906ef 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/10100-10199.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/10100-10199.xml @@ -1118,7 +1118,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/13000-13099.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/13000-13099.xml index 9e3e7f6bed..19e4792934 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/13000-13099.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/13000-13099.xml @@ -520,7 +520,7 @@ - + @@ -940,7 +940,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/13700-13799.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/13700-13799.xml index 77efff4ba8..cc4fea7379 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/13700-13799.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/13700-13799.xml @@ -821,7 +821,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/14600-14699.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/14600-14699.xml index f69962e281..b353175d47 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/14600-14699.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/14600-14699.xml @@ -1802,7 +1802,7 @@ - + @@ -1935,7 +1935,7 @@ - + @@ -2051,7 +2051,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/14700-14799.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/14700-14799.xml index a3e941e58e..1d77ae1229 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/14700-14799.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/14700-14799.xml @@ -13,7 +13,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/17000-17099.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/17000-17099.xml index 577c9a04b3..ad4c0ee487 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/17000-17099.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/17000-17099.xml @@ -97,7 +97,7 @@ - + @@ -352,7 +352,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/20300-20399.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/20300-20399.xml index 3078c0f5cb..5794cf2651 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/20300-20399.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/20300-20399.xml @@ -988,7 +988,7 @@ - + @@ -1104,7 +1104,7 @@ - + @@ -1220,7 +1220,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/21000-21099.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/21000-21099.xml index 9486366425..f37705a602 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/21000-21099.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/21000-21099.xml @@ -686,7 +686,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -786,7 +786,7 @@ - + @@ -808,7 +808,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/21100-21199.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/21100-21199.xml index 1674df9cd6..b3c74373a9 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/21100-21199.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/21100-21199.xml @@ -1575,7 +1575,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/21200-21299.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/21200-21299.xml index 6096340c2f..9297cf0154 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/21200-21299.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/21200-21299.xml @@ -207,7 +207,7 @@ - + @@ -802,7 +802,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -870,7 +870,7 @@ - + @@ -889,7 +889,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/22000-22099.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/22000-22099.xml index 764088379c..eec4b1816f 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/22000-22099.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/22000-22099.xml @@ -449,7 +449,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -737,7 +737,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/22500-22599.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/22500-22599.xml index 97ffa8ee9b..d663c14673 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/22500-22599.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/22500-22599.xml @@ -1030,7 +1030,7 @@ - + @@ -1050,7 +1050,7 @@ - + @@ -1070,7 +1070,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/22600-22699.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/22600-22699.xml index fe798e0670..f2b3976d22 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/22600-22699.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/22600-22699.xml @@ -430,7 +430,7 @@ - + @@ -453,7 +453,7 @@ - + @@ -476,7 +476,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23200-23299.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23200-23299.xml index 0601e7a6dc..85d3f98a04 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23200-23299.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23200-23299.xml @@ -163,7 +163,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -562,7 +562,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -590,7 +590,7 @@ - + @@ -608,7 +608,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23300-23399.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23300-23399.xml index ec95a8c5dd..6ed7779086 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23300-23399.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23300-23399.xml @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23400-23499.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23400-23499.xml index b1e54237db..4242687569 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23400-23499.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23400-23499.xml @@ -1092,7 +1092,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1164,7 +1164,7 @@ - + @@ -1426,7 +1426,7 @@ - + @@ -1442,7 +1442,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23500-23599.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23500-23599.xml index d9b40d7f4e..152b6fb016 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23500-23599.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23500-23599.xml @@ -93,7 +93,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23600-23699.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23600-23699.xml index bed76ea37e..eecdcaced7 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23600-23699.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/23600-23699.xml @@ -189,7 +189,7 @@ - + @@ -566,7 +566,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/28500-28599.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/28500-28599.xml index 8f6a2d61ea..4534b1949d 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/28500-28599.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/28500-28599.xml @@ -43,7 +43,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/30300-30399.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/30300-30399.xml index e4963dd128..dc0e755510 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/30300-30399.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/30300-30399.xml @@ -984,7 +984,7 @@ - + @@ -1008,7 +1008,7 @@ - + @@ -1032,7 +1032,7 @@ - + @@ -1052,7 +1052,7 @@ - + @@ -1075,7 +1075,7 @@ - + @@ -1098,7 +1098,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/34000-34099.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/34000-34099.xml index 2f89319547..bba0cd869d 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/34000-34099.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/34000-34099.xml @@ -180,7 +180,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -220,7 +220,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/34600-34699.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/34600-34699.xml index 1615d04d5c..8d2ef73ce2 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/34600-34699.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/34600-34699.xml @@ -41,7 +41,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/35600-35699.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/35600-35699.xml index e7f1823fc6..5731fef7f8 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/35600-35699.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/35600-35699.xml @@ -1423,7 +1423,7 @@ - + @@ -1443,7 +1443,7 @@ - + @@ -1463,7 +1463,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/35700-35799.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/35700-35799.xml index 33850b0961..54e73a23d4 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/35700-35799.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/35700-35799.xml @@ -771,7 +771,7 @@ - + @@ -791,7 +791,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/35900-35999.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/35900-35999.xml index 21fcbc6906..27c008f491 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/35900-35999.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/35900-35999.xml @@ -475,7 +475,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/36000-36099.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/36000-36099.xml index 0455620fd0..938328ab59 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/36000-36099.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/36000-36099.xml @@ -377,7 +377,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/36200-36299.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/36200-36299.xml index 6565a5e1c6..ca1ce89832 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/36200-36299.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/36200-36299.xml @@ -795,7 +795,7 @@ - + @@ -1083,7 +1083,7 @@ - + @@ -1100,7 +1100,7 @@ - + @@ -1117,7 +1117,7 @@ - + @@ -1134,7 +1134,7 @@ - + @@ -1150,7 +1150,7 @@ - + @@ -1162,7 +1162,7 @@ - + @@ -1214,7 +1214,7 @@ - + @@ -1251,7 +1251,7 @@ - + @@ -1269,7 +1269,7 @@ - + @@ -1287,7 +1287,7 @@ - + @@ -1305,7 +1305,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/36300-36399.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/36300-36399.xml index 4ea0f8508e..32b776b226 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/36300-36399.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/36300-36399.xml @@ -48,7 +48,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -80,7 +80,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -119,7 +119,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/37600-37699.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/37600-37699.xml index 378abf8668..6cbf3f7cb1 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/37600-37699.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/37600-37699.xml @@ -1397,7 +1397,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/37800-37899.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/37800-37899.xml index fa7c63d913..1e709171ef 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/37800-37899.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/37800-37899.xml @@ -789,7 +789,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/40000-40099.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/40000-40099.xml index 2a9143c11b..b21bcd0e43 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/40000-40099.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/40000-40099.xml @@ -829,7 +829,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47300-47399.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47300-47399.xml index 6286e5640c..cb0eebc136 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47300-47399.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47300-47399.xml @@ -1187,7 +1187,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47400-47499.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47400-47499.xml index aee655929a..8fbbd011a1 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47400-47499.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47400-47499.xml @@ -51,7 +51,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -441,7 +441,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -501,7 +501,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47500-47599.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47500-47599.xml index 4d717c19a8..0bc7714a02 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47500-47599.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47500-47599.xml @@ -556,7 +556,7 @@ - + @@ -569,7 +569,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47600-47699.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47600-47699.xml index c12cc148a5..b9e7cf8ca9 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47600-47699.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47600-47699.xml @@ -649,7 +649,7 @@ - + @@ -665,7 +665,7 @@ - + @@ -681,7 +681,7 @@ - + @@ -697,7 +697,7 @@ - + @@ -713,7 +713,7 @@ - + @@ -740,7 +740,7 @@ - + @@ -758,7 +758,7 @@ - + @@ -776,7 +776,7 @@ - + @@ -794,7 +794,7 @@ - + @@ -880,7 +880,7 @@ - + @@ -901,7 +901,7 @@ - + @@ -919,7 +919,7 @@ - + @@ -940,7 +940,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47700-47799.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47700-47799.xml index 28e1ef9200..35eeeb7834 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47700-47799.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/47700-47799.xml @@ -500,7 +500,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -538,7 +538,7 @@ - + @@ -558,7 +558,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48000-48099.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48000-48099.xml index 3091b4f14e..bb3d781413 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48000-48099.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48000-48099.xml @@ -154,7 +154,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48100-48199.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48100-48199.xml index dc949581f9..7d35d2075b 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48100-48199.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48100-48199.xml @@ -931,7 +931,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48200-48299.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48200-48299.xml index b72c471217..8f84f1a8e8 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48200-48299.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48200-48299.xml @@ -1196,7 +1196,7 @@ - + @@ -1210,7 +1210,7 @@ - + @@ -1247,7 +1247,7 @@ - + @@ -1263,7 +1263,7 @@ - + @@ -1365,7 +1365,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48400-48499.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48400-48499.xml index c4f2f3bf45..59712fa737 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48400-48499.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48400-48499.xml @@ -143,7 +143,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -1318,7 +1318,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48500-48599.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48500-48599.xml index 7d24ab3b7c..02e65f0d99 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48500-48599.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48500-48599.xml @@ -402,7 +402,7 @@ - + @@ -417,7 +417,7 @@ - + @@ -432,7 +432,7 @@ - + @@ -446,7 +446,7 @@ - + @@ -539,7 +539,7 @@ - + @@ -584,7 +584,7 @@ - + @@ -623,7 +623,7 @@ - + @@ -660,7 +660,7 @@ - + @@ -697,7 +697,7 @@ - + @@ -735,7 +735,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -812,7 +812,7 @@ - + @@ -850,7 +850,7 @@ - + @@ -889,7 +889,7 @@ - + @@ -927,7 +927,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -1005,7 +1005,7 @@ - + @@ -1041,7 +1041,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1121,7 +1121,7 @@ - + @@ -1136,7 +1136,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48600-48699.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48600-48699.xml index 63f248358f..7d5be5cab4 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48600-48699.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48600-48699.xml @@ -957,7 +957,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48700-48799.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48700-48799.xml index bf8c0ae121..5c10d47e71 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48700-48799.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48700-48799.xml @@ -91,7 +91,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48800-48899.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48800-48899.xml index 8c190ef8db..915f79c9f5 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48800-48899.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/48800-48899.xml @@ -391,7 +391,7 @@ - + @@ -581,7 +581,7 @@ - + @@ -618,7 +618,7 @@ - + @@ -639,7 +639,7 @@ - + @@ -656,7 +656,7 @@ - + @@ -751,7 +751,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80400-80499.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80400-80499.xml index 1f8f359085..fc43bbad65 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80400-80499.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80400-80499.xml @@ -538,7 +538,7 @@ - + @@ -556,7 +556,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80600-80699.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80600-80699.xml index 517e173099..b2ea2f3ef4 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80600-80699.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80600-80699.xml @@ -132,7 +132,7 @@ - + @@ -746,7 +746,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80700-80799.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80700-80799.xml index d52d92358b..34a9378657 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80700-80799.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80700-80799.xml @@ -1042,7 +1042,7 @@ - + @@ -1082,7 +1082,7 @@ - + @@ -1102,7 +1102,7 @@ - + @@ -1281,7 +1281,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80800-80899.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80800-80899.xml index 2bf98f1da9..e4c894b8d5 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80800-80899.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/items/80800-80899.xml @@ -189,7 +189,7 @@ - + @@ -217,7 +217,7 @@ - + @@ -245,7 +245,7 @@ - + @@ -275,7 +275,7 @@ - + @@ -416,7 +416,7 @@ - + @@ -534,7 +534,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/skills/35500-35599.xml b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/skills/35500-35599.xml index a18df34d1f..48c41ed7fa 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/skills/35500-35599.xml +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/stats/skills/35500-35599.xml @@ -737,7 +737,7 @@ SINGLE true - + @@ -768,7 +768,7 @@ NOT_FRIEND true - + @@ -793,7 +793,7 @@ FRIEND true - + @@ -813,7 +813,7 @@ SINGLE true - + @@ -844,7 +844,7 @@ NOT_FRIEND true - + @@ -869,7 +869,7 @@ FRIEND true - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/items.xsd b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/items.xsd index 5a793727b8..1335c46eb6 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_07.0_PreludeOfWar/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_07.0_PreludeOfWar/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_07.0_PreludeOfWar/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_07.0_PreludeOfWar/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/GameServer.java index 87fadee69e..4f45a16bf6 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/GameServer.java @@ -72,7 +72,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; import org.l2jmobius.gameserver.data.xml.EquipmentUpgradeData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -401,8 +400,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/Shutdown.java index 9e0bc3126c..02419a263c 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/Shutdown.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.BotReportTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -452,8 +451,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 4400f50f57..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.NOT_ENOUGH_SPACE_IN_THE_INVENTORY_UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 3)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANCE_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { - resetDailyMissionRewards(); + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + resetTimedHuntingZonesWeekly(); + } + else + { + resetVitalityDaily(); + } + resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); - onResetTimedHuntingZones(); - onResetAttendanceRewards(); + resetTimedHuntingZones(); + resetDailyMissionRewards(); + resetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -85,8 +106,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -104,8 +124,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -146,12 +207,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -256,8 +316,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - @ScheduleTarget - public void onResetTimedHuntingZones() + public void resetTimedHuntingZones() { for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) { @@ -291,8 +350,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Special Hunting Zones has been resetted."); } - @ScheduleTarget - public void onResetWeeklyTimedHuntingZones() + public void resetTimedHuntingZonesWeekly() { for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) { @@ -326,7 +384,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Weekly Special Hunting Zones has been resetted."); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index b8c6dd4354..1caec8603d 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java index a5053fce48..4a328cd17b 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5045,15 +5045,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Summon.java index ad18df7166..c6074376f8 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index d0a8ef2300..9719ca1b59 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -132,7 +132,6 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -185,7 +184,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -193,7 +191,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -225,7 +222,6 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MonsterBookCardHolder; import org.l2jmobius.gameserver.model.holders.MonsterBookRewardHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.RecipeHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; @@ -709,10 +705,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -739,7 +731,9 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnSoloEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -866,7 +860,7 @@ public class PlayerInstance extends Playable // Shared dualclass skills. private static final String KNOWN_DUAL_SKILLS_VAR = "KNOWN_DUAL_SKILLS"; - private static final int[] DUAL_CLASS_SKILLS = new int[] + private static final int[] DUAL_CLASS_SKILLS = { 19222, // Dignity of the Exalted 19223, // Belief of the Exalted @@ -2860,11 +2854,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4789,10 +4779,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -4978,7 +4964,7 @@ public class PlayerInstance extends Playable private Collection onDieDropItem(Creature killer) { final List droppedItems = new ArrayList<>(); - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return droppedItems; } @@ -5308,7 +5294,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8117,7 +8103,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8178,22 +8164,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return isOnSoloEvent() || (getTeam() != attacker.getTeam()); } // Check if the attacker is a Playable @@ -9376,12 +9353,7 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) - { - _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; - return false; - } - if (isOnEvent()) // custom event message + if (_inOlympiadMode || isRegisteredOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_HE_OR_SHE_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11187,12 +11159,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -13066,16 +13032,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13174,21 +13130,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13248,13 +13189,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13268,66 +13202,50 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; + } + + public boolean isOnSoloEvent() + { + return _isOnSoloEvent; + } + + public void setOnSoloEvent(boolean value) + { + _isOnSoloEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13880,63 +13798,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index 964d10ef6e..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,712 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.enums.QuestSound; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.quest.QuestState; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - - // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player == null) - { - continue; - } - final QuestState qs = player.getQuestState("Q10813_ForGlory"); - final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); - final QuestState qs2 = player.getQuestState("Q10825_ForVictory"); - if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_GLORY_ITEM_MAX.getId()) >= Config.EXALTED_FOR_GLORY_ITEM_MAX.getCount()) - { - qs.setCond(2, true); - } - } - else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_HONOR_ITEM_MAX.getId()) >= Config.EXALTED_FOR_HONOR_ITEM_MAX.getCount()) - { - qs1.setCond(2, true); - } - } - else if ((qs2 != null) && !qs2.isCompleted() && qs2.isCond(3)) - { - AbstractScript.giveItems(player, Config.EXALTED_FOR_VICTORY_ITEM_MAX.getId(), 1); - AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); - if (AbstractScript.getQuestItemsCount(player, Config.EXALTED_FOR_VICTORY_ITEM_MAX.getId()) >= Config.EXALTED_FOR_VICTORY_ITEM_MAX.getCount()) - { - qs2.setCond(4, true); - } - } - } - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 0b10e75f59..94eee3bae6 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java index fb0f2bb3da..06efad6874 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java @@ -18,7 +18,7 @@ package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; import java.util.List; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; @@ -27,21 +27,21 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; */ public class OnCeremonyOfChaosMatchResult implements IBaseEvent { - private final List _winners; - private final List _members; + private final List _winners; + private final List _members; - public OnCeremonyOfChaosMatchResult(List winners, List members) + public OnCeremonyOfChaosMatchResult(List winners, List members) { _winners = winners; _members = members; } - public List getWinners() + public List getWinners() { return _winners; } - public List getMembers() + public List getMembers() { return _members; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 197a15f962..9cadbc687e 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANCE_ZONE); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/Item.java index 7a1819fabf..4667ed8eee 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -149,7 +148,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -224,7 +223,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -868,9 +867,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -945,11 +944,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 89a093b3a8..3fdf1554bf 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 53e8c48395..45fcf99be4 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index df386c0245..10b717da90 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -45,7 +45,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -429,11 +428,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index b03f2213a7..95ea857e10 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 5154368eb9..4b61f82ce4 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java index 4bdb81ff87..35fc8e1620 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillTreeData; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -95,12 +94,12 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket player.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java index ebce100c73..dc4e0434d4 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java @@ -23,7 +23,6 @@ import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.enums.SkillFinishType; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -64,12 +63,12 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket client.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { client.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java index ce871f6a18..88a7ec13b1 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,15 +42,15 @@ public class RequestCancelCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } + // if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); + // player.sendPacket(ExCuriousHouseState.IDLE_PACKET); + // + // if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) + // { + // player.prohibiteCeremonyOfChaos(); + // } + // } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java index a4e6f04627..c9e0872ac9 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; /** * @author Sdw @@ -46,21 +42,21 @@ public class RequestCuriousHouseHtml implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) + // { + // final NpcHtmlMessage message = new NpcHtmlMessage(0); + // message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); + // player.sendPacket(message); + // } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java index 33ca3d7b33..9fd38f3805 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,25 +42,25 @@ public class RequestJoinCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); + // player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); + // player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); + // } + // else + // { + // player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); + // } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java index f2e129c77a..7e45b82aac 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java @@ -86,7 +86,7 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket player.sendPacket(SystemMessageId.CANNOT_USE_TIME_LIMITED_HUNTING_ZONES_WHILE_WAITING_FOR_THE_OLYMPIAD); return; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("Cannot use time-limited hunting zones while registered on an event."); return; diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 225f3332ce..80010f938f 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -25,8 +25,6 @@ import org.l2jmobius.gameserver.instancemanager.RankManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -122,8 +120,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -266,7 +262,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java index d26eee8d89..7c74a35616 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java @@ -20,7 +20,6 @@ import java.util.Collection; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -31,9 +30,9 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket { private final int _id; private final int _maxPlayers; - private final Collection _players; + private final Collection _players; - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) + public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) { _id = id; _maxPlayers = maxPlayers; @@ -48,25 +47,14 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket packet.writeD(_id); packet.writeD(_maxPlayers); packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) + for (PlayerInstance player : _players) { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getMaxHp()); + packet.writeD(player.getMaxCp()); + packet.writeD((int) player.getCurrentHp()); + packet.writeD((int) player.getCurrentCp()); } return true; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java index 1f09c4de0d..27605b732b 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java @@ -16,10 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; +import java.util.Collection; + import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -29,30 +30,30 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; public class ExCuriousHouseResult implements IClientOutgoingPacket { private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; + private final Collection _players; - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) + public ExCuriousHouseResult(CeremonyOfChaosResult result, Collection players) { _result = result; - _event = event; + _players = players; } @Override public boolean write(PacketWriter packet) { OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); + packet.writeD(0); // _event.getId() packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> + packet.writeD(_players.size()); // CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + packet.writeD(_players.size()); + for (PlayerInstance player : _players) { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getClassId().getId()); + packet.writeD(0x00); // getLifeTime + packet.writeD(0x00); // getScore + } return true; } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_08.2_Homunculus/.classpath b/L2J_Mobius_08.2_Homunculus/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_08.2_Homunculus/.classpath +++ b/L2J_Mobius_08.2_Homunculus/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/config/AdminCommands.xml b/L2J_Mobius_08.2_Homunculus/dist/game/config/AdminCommands.xml index fadaa47ea7..9c81de1af5 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/config/AdminCommands.xml @@ -256,32 +256,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/CeremonyOfChaos.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/events/CeremonyOfChaos.xml deleted file mode 100644 index 7331135977..0000000000 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/CeremonyOfChaos.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - 224 - 225 - 226 - 227 - - - - - - - Ceremony of Chaos has ended. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - start - end - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index b94e914143..0000000000 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/Elpies.txt b/L2J_Mobius_08.2_Homunculus/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/Rabbits.txt b/L2J_Mobius_08.2_Homunculus/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/Race.txt b/L2J_Mobius_08.2_Homunculus/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_08.2_Homunculus/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_08.2_Homunculus/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_08.2_Homunculus/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 670b26f133..c33f2c6553 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -155,7 +155,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -190,7 +190,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -248,7 +248,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -298,7 +298,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java index 92f5f478a9..848e1d690e 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java @@ -19,7 +19,6 @@ package ai.others.LaVieEnRose; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -128,13 +127,7 @@ public class LaVieEnRose extends AbstractNpcAI return false; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_USE_THE_BEAUTY_SHOP_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - return false; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot use the Beauty Shop while registered in an event."); return false; diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java index 4a0dbcb84f..04ee601406 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java @@ -334,9 +334,9 @@ public class OlyManager extends AbstractNpcAI implements IBypassHandler player.sendPacket(SystemMessageId.THE_OLYMPIAD_GAMES_ARE_NOT_CURRENTLY_IN_PROGRESS); return false; } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { - player.sendMessage("You can not observe games while registered on an event"); + player.sendMessage("You can not observe games while registered on an event."); return false; } else diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java index a3c74220a9..3afbd5674c 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; @@ -266,11 +265,7 @@ public class TrainingCamp extends AbstractNpcAI { return false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. { return false; } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 9ad4e3bb0c..a696d73a9b 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -145,7 +145,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -170,13 +170,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -225,7 +225,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -262,6 +262,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -452,7 +453,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -479,7 +480,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -532,7 +533,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -579,7 +580,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -606,7 +607,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -637,7 +638,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -724,7 +725,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -776,7 +777,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -881,7 +882,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/MasterHandler.java index 7541f21018..3746959db2 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -144,7 +143,6 @@ import handlers.bypasshandlers.ChangePlayerName; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -413,7 +411,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -483,7 +480,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java index cc4fff45e9..6e42775edc 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java @@ -100,7 +100,7 @@ public class SkillConditionMasterHandler SkillConditionHandler.getInstance().registerHandler("OpNeedSummonOrPet", OpNeedSummonOrPetSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotAffectedBySkill", OpNotAffectedBySkillSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotCursed", OpNotCursedSkillCondition::new); - SkillConditionHandler.getInstance().registerHandler("OpNotInCeremonyOfChaos", OpNotInCeremonyOfChaosSkillCondition::new); + SkillConditionHandler.getInstance().registerHandler("OpNotInEvent", OpNotInEventSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInPeacezone", OpNotInPeacezoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInstantzone", OpNotInstantzoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotOlympiad", OpNotOlympiadSkillCondition::new); diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/bypasshandlers/Observation.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/bypasshandlers/Observation.java index d22bb52414..1fa83903f2 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/bypasshandlers/Observation.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/bypasshandlers/Observation.java @@ -99,9 +99,9 @@ public class Observation implements IBypassHandler player.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_SIEGE_WITH_A_PET_OR_SERVITOR_SUMMONED); return false; } - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("Cannot use while current Event"); + player.sendMessage("Cannot use while registered on an event."); return false; } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java deleted file mode 100644 index b5cefc61cc..0000000000 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.skillconditionhandlers; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.WorldObject; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.skills.ISkillCondition; -import org.l2jmobius.gameserver.model.skills.Skill; - -/** - * @author Mobius - */ -public class OpNotInCeremonyOfChaosSkillCondition implements ISkillCondition -{ - public OpNotInCeremonyOfChaosSkillCondition(StatSet params) - { - } - - @Override - public boolean canUse(Creature caster, Skill skill, WorldObject target) - { - return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)); - } -} diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java new file mode 100644 index 0000000000..8b23f3b8b5 --- /dev/null +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java @@ -0,0 +1,39 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package handlers.skillconditionhandlers; + +import org.l2jmobius.gameserver.model.StatSet; +import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.model.skills.ISkillCondition; +import org.l2jmobius.gameserver.model.skills.Skill; + +/** + * @author Mobius + */ +public class OpNotInEventSkillCondition implements ISkillCondition +{ + public OpNotInEventSkillCondition(StatSet params) + { + } + + @Override + public boolean canUse(Creature caster, Skill skill, WorldObject target) + { + return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent()); + } +} diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/00000-00099.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/00000-00099.xml index 756f232d08..6e359e2d16 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/00000-00099.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/00000-00099.xml @@ -1154,7 +1154,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/00700-00799.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/00700-00799.xml index cec1153e56..830a7603c4 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/00700-00799.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/00700-00799.xml @@ -393,7 +393,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -436,7 +436,7 @@ - + @@ -452,7 +452,7 @@ - + @@ -491,7 +491,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -537,7 +537,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -615,7 +615,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/00900-00999.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/00900-00999.xml index 074a172139..b2edf18dc8 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/00900-00999.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/00900-00999.xml @@ -728,7 +728,7 @@ - + @@ -746,7 +746,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -788,7 +788,7 @@ - + @@ -806,7 +806,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -833,7 +833,7 @@ - + @@ -848,7 +848,7 @@ - + @@ -866,7 +866,7 @@ - + @@ -881,7 +881,7 @@ - + @@ -893,7 +893,7 @@ - + @@ -908,7 +908,7 @@ - + @@ -926,7 +926,7 @@ - + @@ -941,7 +941,7 @@ - + @@ -953,7 +953,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/01000-01099.xml index 8527e8ae4a..1006029c49 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/01000-01099.xml @@ -700,7 +700,7 @@ - + @@ -723,7 +723,7 @@ - + @@ -881,7 +881,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/01500-01599.xml index a9ed21859f..0e1dc6af57 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/01500-01599.xml @@ -448,7 +448,7 @@ - + @@ -469,7 +469,7 @@ - + @@ -492,7 +492,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/03900-03999.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/03900-03999.xml index f9b08f1508..71ee57d318 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/03900-03999.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/03900-03999.xml @@ -1181,7 +1181,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/05200-05299.xml index f4f539f84a..dbad4b037c 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/05200-05299.xml @@ -486,7 +486,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -528,7 +528,7 @@ - + @@ -549,7 +549,7 @@ - + @@ -570,7 +570,7 @@ - + @@ -591,7 +591,7 @@ - + @@ -612,7 +612,7 @@ - + @@ -633,7 +633,7 @@ - + @@ -654,7 +654,7 @@ - + @@ -675,7 +675,7 @@ - + @@ -696,7 +696,7 @@ - + @@ -717,7 +717,7 @@ - + @@ -738,7 +738,7 @@ - + @@ -759,7 +759,7 @@ - + @@ -780,7 +780,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/05500-05599.xml index f6058c1c0d..7d5e7a426f 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/05500-05599.xml @@ -1088,7 +1088,7 @@ - + @@ -1107,7 +1107,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/05800-05899.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/05800-05899.xml index 1711ea3961..381c633b83 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/05800-05899.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/05800-05899.xml @@ -706,7 +706,7 @@ - + @@ -726,7 +726,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/06400-06499.xml index 8a1a747c61..d9b9f3f0b5 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -135,7 +135,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08100-08199.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08100-08199.xml index 3418def874..35a908e56a 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08100-08199.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08100-08199.xml @@ -2125,7 +2125,7 @@ - + @@ -2142,7 +2142,7 @@ - + @@ -2159,7 +2159,7 @@ - + @@ -2176,7 +2176,7 @@ - + @@ -2193,7 +2193,7 @@ - + @@ -2210,7 +2210,7 @@ - + @@ -2227,7 +2227,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08200-08299.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08200-08299.xml index ebcedec2bf..a55f3bf83c 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08200-08299.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08200-08299.xml @@ -12,7 +12,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08600-08699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08600-08699.xml index 1bcfdfac90..bb8c23b746 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08600-08699.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08600-08699.xml @@ -374,7 +374,7 @@ - + @@ -512,7 +512,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -998,7 +998,7 @@ - + @@ -1014,7 +1014,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1046,7 +1046,7 @@ - + @@ -1062,7 +1062,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1094,7 +1094,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1126,7 +1126,7 @@ - + @@ -1142,7 +1142,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1174,7 +1174,7 @@ - + @@ -1190,7 +1190,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08700-08799.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08700-08799.xml index 46d93966a8..037b7b6f30 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08700-08799.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/08700-08799.xml @@ -1104,7 +1104,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/09100-09199.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/09100-09199.xml index db405431d8..43f71fc20b 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/09100-09199.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/09100-09199.xml @@ -963,7 +963,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/09200-09299.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/09200-09299.xml index d7ad0347b3..8d83451d46 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/09200-09299.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/09200-09299.xml @@ -116,7 +116,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/09700-09799.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/09700-09799.xml index a56c698a4c..60961c3154 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/09700-09799.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/09700-09799.xml @@ -46,7 +46,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/10100-10199.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/10100-10199.xml index 33be8a0472..05b235fcb0 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/10100-10199.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/10100-10199.xml @@ -456,7 +456,7 @@ - + @@ -1119,7 +1119,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/13000-13099.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/13000-13099.xml index 22d66f5de1..47cec074aa 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/13000-13099.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/13000-13099.xml @@ -520,7 +520,7 @@ - + @@ -940,7 +940,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/13700-13799.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/13700-13799.xml index c8832ed030..c83d2590f7 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/13700-13799.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/13700-13799.xml @@ -821,7 +821,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/14600-14699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/14600-14699.xml index f5d011801a..4eb88dd5a2 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/14600-14699.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/14600-14699.xml @@ -1802,7 +1802,7 @@ - + @@ -1935,7 +1935,7 @@ - + @@ -2051,7 +2051,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/14700-14799.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/14700-14799.xml index 491a1f0f99..e3b1352a4d 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/14700-14799.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/14700-14799.xml @@ -13,7 +13,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/17000-17099.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/17000-17099.xml index 37c5189ce6..42413c0cbc 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/17000-17099.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/17000-17099.xml @@ -97,7 +97,7 @@ - + @@ -352,7 +352,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/20300-20399.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/20300-20399.xml index 54db6b0b89..d507c1f1c5 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/20300-20399.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/20300-20399.xml @@ -988,7 +988,7 @@ - + @@ -1104,7 +1104,7 @@ - + @@ -1220,7 +1220,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/21000-21099.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/21000-21099.xml index 5c1d1a217e..72ebc22f38 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/21000-21099.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/21000-21099.xml @@ -686,7 +686,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -786,7 +786,7 @@ - + @@ -808,7 +808,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/21100-21199.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/21100-21199.xml index 7ba6200b7c..2080903e1b 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/21100-21199.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/21100-21199.xml @@ -1575,7 +1575,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/21200-21299.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/21200-21299.xml index 5d1f4e84ee..556e9371f3 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/21200-21299.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/21200-21299.xml @@ -207,7 +207,7 @@ - + @@ -802,7 +802,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -870,7 +870,7 @@ - + @@ -889,7 +889,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/22000-22099.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/22000-22099.xml index 003b6ad535..7f56d0d498 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/22000-22099.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/22000-22099.xml @@ -449,7 +449,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -737,7 +737,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/22500-22599.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/22500-22599.xml index 311e6d6831..f2ee9df7cd 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/22500-22599.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/22500-22599.xml @@ -1030,7 +1030,7 @@ - + @@ -1050,7 +1050,7 @@ - + @@ -1070,7 +1070,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/22600-22699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/22600-22699.xml index 23e7905e10..c6c9776382 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/22600-22699.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/22600-22699.xml @@ -430,7 +430,7 @@ - + @@ -453,7 +453,7 @@ - + @@ -476,7 +476,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23200-23299.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23200-23299.xml index 5ccede4604..077b1cd3e4 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23200-23299.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23200-23299.xml @@ -163,7 +163,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -562,7 +562,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -590,7 +590,7 @@ - + @@ -608,7 +608,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23300-23399.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23300-23399.xml index 978412cd1a..d6890a875a 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23300-23399.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23300-23399.xml @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23400-23499.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23400-23499.xml index 8b29d45573..7369d55926 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23400-23499.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23400-23499.xml @@ -1092,7 +1092,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1164,7 +1164,7 @@ - + @@ -1430,7 +1430,7 @@ - + @@ -1446,7 +1446,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23500-23599.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23500-23599.xml index 2434d566f0..8577fac601 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23500-23599.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23500-23599.xml @@ -93,7 +93,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23600-23699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23600-23699.xml index 7474c4f5c9..069e44ecb7 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23600-23699.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/23600-23699.xml @@ -189,7 +189,7 @@ - + @@ -566,7 +566,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/28500-28599.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/28500-28599.xml index eded547dd0..1300eac1dc 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/28500-28599.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/28500-28599.xml @@ -43,7 +43,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/29600-29699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/29600-29699.xml index 9cd238d455..a87add5dbe 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/29600-29699.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/29600-29699.xml @@ -723,7 +723,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/29700-29799.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/29700-29799.xml index 5fd8ffbe6b..7f2ece53ec 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/29700-29799.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/29700-29799.xml @@ -1236,7 +1236,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/30300-30399.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/30300-30399.xml index 12c75714d9..a7a6df5846 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/30300-30399.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/30300-30399.xml @@ -984,7 +984,7 @@ - + @@ -1008,7 +1008,7 @@ - + @@ -1032,7 +1032,7 @@ - + @@ -1052,7 +1052,7 @@ - + @@ -1075,7 +1075,7 @@ - + @@ -1098,7 +1098,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/34000-34099.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/34000-34099.xml index 5cd540f4af..4db763defe 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/34000-34099.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/34000-34099.xml @@ -180,7 +180,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -220,7 +220,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/34600-34699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/34600-34699.xml index 4a23b36f3e..12af9a11e6 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/34600-34699.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/34600-34699.xml @@ -41,7 +41,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/35600-35699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/35600-35699.xml index 6e08a27daf..7face7aa3b 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/35600-35699.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/35600-35699.xml @@ -1423,7 +1423,7 @@ - + @@ -1443,7 +1443,7 @@ - + @@ -1463,7 +1463,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/35700-35799.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/35700-35799.xml index 09d5aa4949..1655e27d75 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/35700-35799.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/35700-35799.xml @@ -772,7 +772,7 @@ - + @@ -792,7 +792,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/35900-35999.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/35900-35999.xml index ff60b7749a..b7a0a46306 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/35900-35999.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/35900-35999.xml @@ -447,7 +447,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/36000-36099.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/36000-36099.xml index c7f72d7bd9..e3a57fad88 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/36000-36099.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/36000-36099.xml @@ -377,7 +377,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/36200-36299.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/36200-36299.xml index eeeb6d517f..3614caeb1b 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/36200-36299.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/36200-36299.xml @@ -795,7 +795,7 @@ - + @@ -1083,7 +1083,7 @@ - + @@ -1100,7 +1100,7 @@ - + @@ -1117,7 +1117,7 @@ - + @@ -1134,7 +1134,7 @@ - + @@ -1150,7 +1150,7 @@ - + @@ -1162,7 +1162,7 @@ - + @@ -1214,7 +1214,7 @@ - + @@ -1251,7 +1251,7 @@ - + @@ -1269,7 +1269,7 @@ - + @@ -1287,7 +1287,7 @@ - + @@ -1305,7 +1305,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/36300-36399.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/36300-36399.xml index 7a22dae01b..a97b2801fd 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/36300-36399.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/36300-36399.xml @@ -48,7 +48,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -80,7 +80,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -119,7 +119,7 @@ - + @@ -397,7 +397,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/37600-37699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/37600-37699.xml index fae3c6bdd1..d5258f0cbb 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/37600-37699.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/37600-37699.xml @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/37800-37899.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/37800-37899.xml index 4ad153265f..82ed1e72cc 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/37800-37899.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/37800-37899.xml @@ -789,7 +789,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/40000-40099.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/40000-40099.xml index 980d45dc10..99999b2acd 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/40000-40099.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/40000-40099.xml @@ -829,7 +829,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47300-47399.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47300-47399.xml index fa35d02582..17dfbe16eb 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47300-47399.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47300-47399.xml @@ -1235,7 +1235,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47400-47499.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47400-47499.xml index 0f07971f05..1c9e8ce809 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47400-47499.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47400-47499.xml @@ -51,7 +51,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -441,7 +441,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -501,7 +501,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47500-47599.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47500-47599.xml index 01025a456d..d2b660e9f7 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47500-47599.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47500-47599.xml @@ -550,7 +550,7 @@ - + @@ -563,7 +563,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47600-47699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47600-47699.xml index b45a99428c..247f33e845 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47600-47699.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47600-47699.xml @@ -644,7 +644,7 @@ - + @@ -660,7 +660,7 @@ - + @@ -676,7 +676,7 @@ - + @@ -692,7 +692,7 @@ - + @@ -708,7 +708,7 @@ - + @@ -725,7 +725,7 @@ - + @@ -743,7 +743,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -779,7 +779,7 @@ - + @@ -797,7 +797,7 @@ - + @@ -883,7 +883,7 @@ - + @@ -904,7 +904,7 @@ - + @@ -923,7 +923,7 @@ - + @@ -944,7 +944,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47700-47799.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47700-47799.xml index 3d3d5ca10d..03f97bf688 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47700-47799.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/47700-47799.xml @@ -500,7 +500,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -539,7 +539,7 @@ - + @@ -559,7 +559,7 @@ - + @@ -834,7 +834,7 @@ - + @@ -856,7 +856,7 @@ - + @@ -877,7 +877,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48000-48099.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48000-48099.xml index fd5cd9e74a..efa96ede6b 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48000-48099.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48000-48099.xml @@ -154,7 +154,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48100-48199.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48100-48199.xml index 7239c25b90..3b34e61ed9 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48100-48199.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48100-48199.xml @@ -971,7 +971,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48200-48299.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48200-48299.xml index 1d9274bc12..85b8f95bf8 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48200-48299.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48200-48299.xml @@ -1205,7 +1205,7 @@ - + @@ -1219,7 +1219,7 @@ - + @@ -1256,7 +1256,7 @@ - + @@ -1273,7 +1273,7 @@ - + @@ -1375,7 +1375,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48300-48399.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48300-48399.xml index 5b4e8e034a..74dac60394 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48300-48399.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48300-48399.xml @@ -346,7 +346,7 @@ - + @@ -364,7 +364,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48400-48499.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48400-48499.xml index 06bd5f9841..3d1e458b21 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48400-48499.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48400-48499.xml @@ -143,7 +143,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -1382,7 +1382,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48500-48599.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48500-48599.xml index ea6402a199..e053326f58 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48500-48599.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48500-48599.xml @@ -404,7 +404,7 @@ - + @@ -419,7 +419,7 @@ - + @@ -434,7 +434,7 @@ - + @@ -448,7 +448,7 @@ - + @@ -541,7 +541,7 @@ - + @@ -596,7 +596,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -672,7 +672,7 @@ - + @@ -709,7 +709,7 @@ - + @@ -747,7 +747,7 @@ - + @@ -785,7 +785,7 @@ - + @@ -825,7 +825,7 @@ - + @@ -863,7 +863,7 @@ - + @@ -902,7 +902,7 @@ - + @@ -940,7 +940,7 @@ - + @@ -979,7 +979,7 @@ - + @@ -1018,7 +1018,7 @@ - + @@ -1054,7 +1054,7 @@ - + @@ -1091,7 +1091,7 @@ - + @@ -1134,7 +1134,7 @@ - + @@ -1149,7 +1149,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48600-48699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48600-48699.xml index 365adc05c7..da8a513a48 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48600-48699.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48600-48699.xml @@ -965,7 +965,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48700-48799.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48700-48799.xml index d427c5d9a8..1965d76a6d 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48700-48799.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48700-48799.xml @@ -91,7 +91,7 @@ - + @@ -560,7 +560,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48800-48899.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48800-48899.xml index 91610bfda9..0102f367d8 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48800-48899.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/48800-48899.xml @@ -399,7 +399,7 @@ - + @@ -631,7 +631,7 @@ - + @@ -668,7 +668,7 @@ - + @@ -689,7 +689,7 @@ - + @@ -706,7 +706,7 @@ - + @@ -801,7 +801,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80400-80499.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80400-80499.xml index 22bec7e5ad..a204d67436 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80400-80499.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80400-80499.xml @@ -536,7 +536,7 @@ - + @@ -554,7 +554,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80600-80699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80600-80699.xml index 3299ac135a..15b56a2dbe 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80600-80699.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80600-80699.xml @@ -132,7 +132,7 @@ - + @@ -816,7 +816,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80700-80799.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80700-80799.xml index fccf8f6664..0a6d871174 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80700-80799.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80700-80799.xml @@ -1042,7 +1042,7 @@ - + @@ -1083,7 +1083,7 @@ - + @@ -1103,7 +1103,7 @@ - + @@ -1284,7 +1284,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80800-80899.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80800-80899.xml index 38bb7dab05..102e18e89a 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80800-80899.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/80800-80899.xml @@ -189,7 +189,7 @@ - + @@ -217,7 +217,7 @@ - + @@ -245,7 +245,7 @@ - + @@ -276,7 +276,7 @@ - + @@ -417,7 +417,7 @@ - + @@ -529,7 +529,7 @@ - + @@ -570,7 +570,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/81000-81099.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/81000-81099.xml index b0cd19859f..3f349177ce 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/81000-81099.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/81000-81099.xml @@ -160,7 +160,7 @@ - + @@ -178,7 +178,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/81600-81699.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/81600-81699.xml index 88904a3477..8f8291211c 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/81600-81699.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/items/81600-81699.xml @@ -904,7 +904,7 @@ - + @@ -926,7 +926,7 @@ - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/08800-08899.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/08800-08899.xml index aa8f124d3f..1d9f87d247 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/08800-08899.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/08800-08899.xml @@ -2262,7 +2262,7 @@ 36415 22 - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/21400-21499.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/21400-21499.xml index fa102d7cbc..eaf84de3fd 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/21400-21499.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/21400-21499.xml @@ -1069,7 +1069,7 @@ true true - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/35500-35599.xml b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/35500-35599.xml index a6819fb0a7..b4e1c47c75 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/35500-35599.xml +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/stats/skills/35500-35599.xml @@ -751,7 +751,7 @@ 3031 true - + @@ -784,7 +784,7 @@ 3031 true - + @@ -835,7 +835,7 @@ 3031 true - + @@ -862,7 +862,7 @@ 3031 true - + @@ -895,7 +895,7 @@ 3031 true - + @@ -946,7 +946,7 @@ 3031 true - + diff --git a/L2J_Mobius_08.2_Homunculus/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_08.2_Homunculus/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_08.2_Homunculus/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_08.2_Homunculus/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_08.2_Homunculus/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_08.2_Homunculus/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/GameServer.java index 3c2a05474e..087f46fca5 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/GameServer.java @@ -72,7 +72,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; import org.l2jmobius.gameserver.data.xml.EquipmentUpgradeData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -401,8 +400,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/Shutdown.java index 9e0bc3126c..02419a263c 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/Shutdown.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.BotReportTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -452,8 +451,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 4400f50f57..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.NOT_ENOUGH_SPACE_IN_THE_INVENTORY_UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 3)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANCE_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { - resetDailyMissionRewards(); + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + resetTimedHuntingZonesWeekly(); + resetThroneOfHeroes(); + } + else + { + resetVitalityDaily(); + } + resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); + resetTimedHuntingZones(); + resetDailyMissionRewards(); resetHomunculusResetPoints(); - onResetTimedHuntingZones(); - onResetAttendanceRewards(); + resetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -88,8 +110,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -107,23 +128,22 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onDailyVitalityReset() + private void resetVitalityDaily() { if (!Config.ENABLE_VITALITY) { return; } - int Vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; for (PlayerInstance player : World.getInstance().getPlayers()) { final int VP = player.getVitalityPoints(); - player.setVitalityPoints(VP + Vitality, false); + player.setVitalityPoints(VP + vitality, false); for (SubClassHolder subclass : player.getSubClasses().values()) { final int VPS = subclass.getVitalityPoints(); - subclass.setVitalityPoints(VPS + Vitality); + subclass.setVitalityPoints(VPS + vitality); } } @@ -150,8 +170,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Daily Vitality Added"); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -192,12 +211,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -302,8 +320,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - @ScheduleTarget - public void onResetThroneOfHeroes() + public void resetThroneOfHeroes() { // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) @@ -338,7 +355,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Throne of Heroes Entry has been resetted."); } - public void onResetTimedHuntingZones() + public void resetTimedHuntingZones() { for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) { @@ -372,8 +389,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Special Hunting Zones has been resetted."); } - @ScheduleTarget - public void onResetWeeklyTimedHuntingZones() + public void resetTimedHuntingZonesWeekly() { for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) { @@ -440,7 +456,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Homunculus Reset Points has been resetted."); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index b8c6dd4354..1caec8603d 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java index eaf80b8f2b..34aba9caa8 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5045,15 +5045,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Summon.java index ad18df7166..c6074376f8 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index ca447a1d26..789a826507 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -131,7 +131,6 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -184,7 +183,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -192,7 +190,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -223,7 +220,6 @@ import org.l2jmobius.gameserver.model.holders.DamageTakenHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.RecipeHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; @@ -711,10 +707,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -743,7 +735,9 @@ public class PlayerInstance extends Playable private int _lastAmmunitionId = 0; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnSoloEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -2890,11 +2884,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4809,10 +4799,6 @@ public class PlayerInstance extends Playable { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); setTotalDeaths(getTotalDeaths() + 1); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -4998,7 +4984,7 @@ public class PlayerInstance extends Playable private Collection onDieDropItem(Creature killer) { final List droppedItems = new ArrayList<>(); - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return droppedItems; } @@ -5351,7 +5337,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8219,7 +8205,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8280,22 +8266,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return isOnSoloEvent() || (getTeam() != attacker.getTeam()); } // Check if the attacker is a Playable @@ -9478,12 +9455,7 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) - { - _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; - return false; - } - if (isOnEvent()) // custom event message + if (_inOlympiadMode || isRegisteredOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_HE_OR_SHE_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11302,12 +11274,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -13181,16 +13147,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13289,21 +13245,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13363,13 +13304,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13383,66 +13317,50 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; + } + + public boolean isOnSoloEvent() + { + return _isOnSoloEvent; + } + + public void setOnSoloEvent(boolean value) + { + _isOnSoloEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13995,63 +13913,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index 7e68bcfff0..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,669 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 5); // Guessed - final int boxs = Rnd.get(1, 5); - winner.addItem("CoC-Winner", 45584, marksRewarded, winner, true); // Mark of battle - winner.addItem("CoC-Winner", 36333, boxs, winner, true); // Mysterious Box - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 0b10e75f59..94eee3bae6 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java index fb0f2bb3da..06efad6874 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java @@ -18,7 +18,7 @@ package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; import java.util.List; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; @@ -27,21 +27,21 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; */ public class OnCeremonyOfChaosMatchResult implements IBaseEvent { - private final List _winners; - private final List _members; + private final List _winners; + private final List _members; - public OnCeremonyOfChaosMatchResult(List winners, List members) + public OnCeremonyOfChaosMatchResult(List winners, List members) { _winners = winners; _members = members; } - public List getWinners() + public List getWinners() { return _winners; } - public List getMembers() + public List getMembers() { return _members; } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 197a15f962..9cadbc687e 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANCE_ZONE); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/items/Item.java index 7a1819fabf..4667ed8eee 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -149,7 +148,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -224,7 +223,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -868,9 +867,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -945,11 +944,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 89a093b3a8..3fdf1554bf 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 53e8c48395..45fcf99be4 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index a238389152..16c855ca39 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -45,7 +45,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -436,11 +435,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index b03f2213a7..95ea857e10 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 8d08d58882..586cf4c238 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -166,12 +165,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java index 4bdb81ff87..35fc8e1620 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillTreeData; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -95,12 +94,12 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket player.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java index ebce100c73..dc4e0434d4 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java @@ -23,7 +23,6 @@ import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.enums.SkillFinishType; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -64,12 +63,12 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket client.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { client.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java index ce871f6a18..88a7ec13b1 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,15 +42,15 @@ public class RequestCancelCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } + // if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); + // player.sendPacket(ExCuriousHouseState.IDLE_PACKET); + // + // if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) + // { + // player.prohibiteCeremonyOfChaos(); + // } + // } } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java index a4e6f04627..c9e0872ac9 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; /** * @author Sdw @@ -46,21 +42,21 @@ public class RequestCuriousHouseHtml implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) + // { + // final NpcHtmlMessage message = new NpcHtmlMessage(0); + // message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); + // player.sendPacket(message); + // } } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java index 33ca3d7b33..9fd38f3805 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,25 +42,25 @@ public class RequestJoinCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); + // player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); + // player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); + // } + // else + // { + // player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); + // } } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java index f2e129c77a..7e45b82aac 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java @@ -86,7 +86,7 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket player.sendPacket(SystemMessageId.CANNOT_USE_TIME_LIMITED_HUNTING_ZONES_WHILE_WAITING_FOR_THE_OLYMPIAD); return; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("Cannot use time-limited hunting zones while registered on an event."); return; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 74a24bbfb0..a72c4801c4 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -26,8 +26,6 @@ import org.l2jmobius.gameserver.instancemanager.RankManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -123,8 +121,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -267,7 +263,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java index d26eee8d89..7c74a35616 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java @@ -20,7 +20,6 @@ import java.util.Collection; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -31,9 +30,9 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket { private final int _id; private final int _maxPlayers; - private final Collection _players; + private final Collection _players; - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) + public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) { _id = id; _maxPlayers = maxPlayers; @@ -48,25 +47,14 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket packet.writeD(_id); packet.writeD(_maxPlayers); packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) + for (PlayerInstance player : _players) { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getMaxHp()); + packet.writeD(player.getMaxCp()); + packet.writeD((int) player.getCurrentHp()); + packet.writeD((int) player.getCurrentCp()); } return true; } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java index 1f09c4de0d..27605b732b 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java @@ -16,10 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; +import java.util.Collection; + import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -29,30 +30,30 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; public class ExCuriousHouseResult implements IClientOutgoingPacket { private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; + private final Collection _players; - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) + public ExCuriousHouseResult(CeremonyOfChaosResult result, Collection players) { _result = result; - _event = event; + _players = players; } @Override public boolean write(PacketWriter packet) { OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); + packet.writeD(0); // _event.getId() packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> + packet.writeD(_players.size()); // CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + packet.writeD(_players.size()); + for (PlayerInstance player : _players) { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getClassId().getId()); + packet.writeD(0x00); // getLifeTime + packet.writeD(0x00); // getScore + } return true; } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/.classpath b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/.classpath +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/AdminCommands.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/AdminCommands.xml index fadaa47ea7..9c81de1af5 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/AdminCommands.xml @@ -256,32 +256,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/CeremonyOfChaos.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/CeremonyOfChaos.xml deleted file mode 100644 index 7331135977..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/CeremonyOfChaos.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - 224 - 225 - 226 - 227 - - - - - - - Ceremony of Chaos has ended. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - start - end - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index b94e914143..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/Elpies.txt b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/Rabbits.txt b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/Race.txt b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 670b26f133..c33f2c6553 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -155,7 +155,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -190,7 +190,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -248,7 +248,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -298,7 +298,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java index 92f5f478a9..848e1d690e 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/LaVieEnRose/LaVieEnRose.java @@ -19,7 +19,6 @@ package ai.others.LaVieEnRose; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -128,13 +127,7 @@ public class LaVieEnRose extends AbstractNpcAI return false; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_USE_THE_BEAUTY_SHOP_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - return false; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot use the Beauty Shop while registered in an event."); return false; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java index 4a0dbcb84f..04ee601406 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/OlyManager/OlyManager.java @@ -334,9 +334,9 @@ public class OlyManager extends AbstractNpcAI implements IBypassHandler player.sendPacket(SystemMessageId.THE_OLYMPIAD_GAMES_ARE_NOT_CURRENTLY_IN_PROGRESS); return false; } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { - player.sendMessage("You can not observe games while registered on an event"); + player.sendMessage("You can not observe games while registered on an event."); return false; } else diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java index a3c74220a9..3afbd5674c 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/ai/others/TrainingCamp/TrainingCamp.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent; @@ -266,11 +265,7 @@ public class TrainingCamp extends AbstractNpcAI { return false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. { return false; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 9ad4e3bb0c..a696d73a9b 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -145,7 +145,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -170,13 +170,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -225,7 +225,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -262,6 +262,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -452,7 +453,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -479,7 +480,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -532,7 +533,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -579,7 +580,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -606,7 +607,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -637,7 +638,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -724,7 +725,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -776,7 +777,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -881,7 +882,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/MasterHandler.java index 00128918bb..ea2f4c9cbc 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -144,7 +143,6 @@ import handlers.bypasshandlers.ChangePlayerName; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -414,7 +412,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -484,7 +481,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java index cc4fff45e9..6e42775edc 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/SkillConditionMasterHandler.java @@ -100,7 +100,7 @@ public class SkillConditionMasterHandler SkillConditionHandler.getInstance().registerHandler("OpNeedSummonOrPet", OpNeedSummonOrPetSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotAffectedBySkill", OpNotAffectedBySkillSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotCursed", OpNotCursedSkillCondition::new); - SkillConditionHandler.getInstance().registerHandler("OpNotInCeremonyOfChaos", OpNotInCeremonyOfChaosSkillCondition::new); + SkillConditionHandler.getInstance().registerHandler("OpNotInEvent", OpNotInEventSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInPeacezone", OpNotInPeacezoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotInstantzone", OpNotInstantzoneSkillCondition::new); SkillConditionHandler.getInstance().registerHandler("OpNotOlympiad", OpNotOlympiadSkillCondition::new); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/bypasshandlers/Observation.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/bypasshandlers/Observation.java index d22bb52414..1fa83903f2 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/bypasshandlers/Observation.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/bypasshandlers/Observation.java @@ -99,9 +99,9 @@ public class Observation implements IBypassHandler player.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_SIEGE_WITH_A_PET_OR_SERVITOR_SUMMONED); return false; } - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("Cannot use while current Event"); + player.sendMessage("Cannot use while registered on an event."); return false; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java deleted file mode 100644 index b5cefc61cc..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInCeremonyOfChaosSkillCondition.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.skillconditionhandlers; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.WorldObject; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.skills.ISkillCondition; -import org.l2jmobius.gameserver.model.skills.Skill; - -/** - * @author Mobius - */ -public class OpNotInCeremonyOfChaosSkillCondition implements ISkillCondition -{ - public OpNotInCeremonyOfChaosSkillCondition(StatSet params) - { - } - - @Override - public boolean canUse(Creature caster, Skill skill, WorldObject target) - { - return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)); - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java new file mode 100644 index 0000000000..8b23f3b8b5 --- /dev/null +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/skillconditionhandlers/OpNotInEventSkillCondition.java @@ -0,0 +1,39 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package handlers.skillconditionhandlers; + +import org.l2jmobius.gameserver.model.StatSet; +import org.l2jmobius.gameserver.model.WorldObject; +import org.l2jmobius.gameserver.model.actor.Creature; +import org.l2jmobius.gameserver.model.skills.ISkillCondition; +import org.l2jmobius.gameserver.model.skills.Skill; + +/** + * @author Mobius + */ +public class OpNotInEventSkillCondition implements ISkillCondition +{ + public OpNotInEventSkillCondition(StatSet params) + { + } + + @Override + public boolean canUse(Creature caster, Skill skill, WorldObject target) + { + return (caster.isPlayer() && !caster.getActingPlayer().isOnEvent()); + } +} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/00000-00099.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/00000-00099.xml index 63140f130d..5b2f05224e 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/00000-00099.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/00000-00099.xml @@ -1154,7 +1154,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/00700-00799.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/00700-00799.xml index 486a99d0bf..0819d0bad7 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/00700-00799.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/00700-00799.xml @@ -393,7 +393,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -436,7 +436,7 @@ - + @@ -452,7 +452,7 @@ - + @@ -491,7 +491,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -537,7 +537,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -615,7 +615,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/00900-00999.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/00900-00999.xml index 0736aaf109..6be29dea37 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/00900-00999.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/00900-00999.xml @@ -728,7 +728,7 @@ - + @@ -746,7 +746,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -788,7 +788,7 @@ - + @@ -806,7 +806,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -833,7 +833,7 @@ - + @@ -848,7 +848,7 @@ - + @@ -866,7 +866,7 @@ - + @@ -881,7 +881,7 @@ - + @@ -893,7 +893,7 @@ - + @@ -908,7 +908,7 @@ - + @@ -926,7 +926,7 @@ - + @@ -941,7 +941,7 @@ - + @@ -953,7 +953,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/01000-01099.xml index 0c1376cf2f..d7f65f16fc 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/01000-01099.xml @@ -700,7 +700,7 @@ - + @@ -723,7 +723,7 @@ - + @@ -881,7 +881,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/01500-01599.xml index 99a0ec2220..c7c01f3047 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/01500-01599.xml @@ -448,7 +448,7 @@ - + @@ -469,7 +469,7 @@ - + @@ -492,7 +492,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/03900-03999.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/03900-03999.xml index ebc3ce5efc..a951447656 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/03900-03999.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/03900-03999.xml @@ -1181,7 +1181,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/05200-05299.xml index ca3c0068f1..056485df4b 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/05200-05299.xml @@ -486,7 +486,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -528,7 +528,7 @@ - + @@ -549,7 +549,7 @@ - + @@ -570,7 +570,7 @@ - + @@ -591,7 +591,7 @@ - + @@ -612,7 +612,7 @@ - + @@ -633,7 +633,7 @@ - + @@ -654,7 +654,7 @@ - + @@ -675,7 +675,7 @@ - + @@ -696,7 +696,7 @@ - + @@ -717,7 +717,7 @@ - + @@ -738,7 +738,7 @@ - + @@ -759,7 +759,7 @@ - + @@ -780,7 +780,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/05500-05599.xml index 9bbb6f4c85..99e73f94c4 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/05500-05599.xml @@ -1088,7 +1088,7 @@ - + @@ -1107,7 +1107,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/05800-05899.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/05800-05899.xml index ca24701079..fc00e34cdb 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/05800-05899.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/05800-05899.xml @@ -706,7 +706,7 @@ - + @@ -726,7 +726,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/06400-06499.xml index 2097275736..17318d2780 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -135,7 +135,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08100-08199.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08100-08199.xml index d4718125eb..8e2a3b822d 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08100-08199.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08100-08199.xml @@ -2125,7 +2125,7 @@ - + @@ -2142,7 +2142,7 @@ - + @@ -2159,7 +2159,7 @@ - + @@ -2176,7 +2176,7 @@ - + @@ -2193,7 +2193,7 @@ - + @@ -2210,7 +2210,7 @@ - + @@ -2227,7 +2227,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08200-08299.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08200-08299.xml index f063087935..ec27783910 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08200-08299.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08200-08299.xml @@ -12,7 +12,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08600-08699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08600-08699.xml index a78e769410..35b7e9843e 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08600-08699.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08600-08699.xml @@ -374,7 +374,7 @@ - + @@ -512,7 +512,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -998,7 +998,7 @@ - + @@ -1014,7 +1014,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1046,7 +1046,7 @@ - + @@ -1062,7 +1062,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1094,7 +1094,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1126,7 +1126,7 @@ - + @@ -1142,7 +1142,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1174,7 +1174,7 @@ - + @@ -1190,7 +1190,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08700-08799.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08700-08799.xml index 1a71f7fc24..480862ee69 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08700-08799.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/08700-08799.xml @@ -1104,7 +1104,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/09100-09199.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/09100-09199.xml index 14f8d31fb8..362db230f7 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/09100-09199.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/09100-09199.xml @@ -963,7 +963,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/09200-09299.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/09200-09299.xml index ec3cf297be..b52581e5fa 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/09200-09299.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/09200-09299.xml @@ -116,7 +116,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/09700-09799.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/09700-09799.xml index c1fbae2512..cc51def907 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/09700-09799.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/09700-09799.xml @@ -46,7 +46,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/10100-10199.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/10100-10199.xml index 29fea62396..3d4989b40f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/10100-10199.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/10100-10199.xml @@ -456,7 +456,7 @@ - + @@ -1119,7 +1119,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/13000-13099.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/13000-13099.xml index fe94409042..6ef0efbbe2 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/13000-13099.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/13000-13099.xml @@ -520,7 +520,7 @@ - + @@ -940,7 +940,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/13700-13799.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/13700-13799.xml index 4f20452801..998830ac37 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/13700-13799.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/13700-13799.xml @@ -821,7 +821,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/14600-14699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/14600-14699.xml index efcee6a210..66755a37aa 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/14600-14699.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/14600-14699.xml @@ -1802,7 +1802,7 @@ - + @@ -1935,7 +1935,7 @@ - + @@ -2051,7 +2051,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/14700-14799.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/14700-14799.xml index 68542213cf..e7c406b5c6 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/14700-14799.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/14700-14799.xml @@ -13,7 +13,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/17000-17099.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/17000-17099.xml index e6a11be9ef..db68de08c5 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/17000-17099.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/17000-17099.xml @@ -97,7 +97,7 @@ - + @@ -352,7 +352,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/20300-20399.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/20300-20399.xml index a5e1eed937..8a19b397ee 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/20300-20399.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/20300-20399.xml @@ -988,7 +988,7 @@ - + @@ -1104,7 +1104,7 @@ - + @@ -1220,7 +1220,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/21000-21099.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/21000-21099.xml index 620b9fa800..0254aec13f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/21000-21099.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/21000-21099.xml @@ -686,7 +686,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -786,7 +786,7 @@ - + @@ -808,7 +808,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/21100-21199.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/21100-21199.xml index 88694b12df..9468cd3418 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/21100-21199.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/21100-21199.xml @@ -1575,7 +1575,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/21200-21299.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/21200-21299.xml index 9ee4146192..25470e5dc5 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/21200-21299.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/21200-21299.xml @@ -207,7 +207,7 @@ - + @@ -802,7 +802,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -870,7 +870,7 @@ - + @@ -889,7 +889,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/22000-22099.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/22000-22099.xml index 316765f60e..e636ce45be 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/22000-22099.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/22000-22099.xml @@ -449,7 +449,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -737,7 +737,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/22500-22599.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/22500-22599.xml index fde9d2527b..246067fd5c 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/22500-22599.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/22500-22599.xml @@ -1030,7 +1030,7 @@ - + @@ -1050,7 +1050,7 @@ - + @@ -1070,7 +1070,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/22600-22699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/22600-22699.xml index 9da2049c14..2cdfc5bb20 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/22600-22699.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/22600-22699.xml @@ -430,7 +430,7 @@ - + @@ -453,7 +453,7 @@ - + @@ -476,7 +476,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23200-23299.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23200-23299.xml index a0b64e83b1..47d3a53741 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23200-23299.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23200-23299.xml @@ -163,7 +163,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -562,7 +562,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -590,7 +590,7 @@ - + @@ -608,7 +608,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23300-23399.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23300-23399.xml index d34e1bdf88..44261dee27 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23300-23399.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23300-23399.xml @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23400-23499.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23400-23499.xml index 426be70efb..a8b80ff860 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23400-23499.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23400-23499.xml @@ -1092,7 +1092,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1164,7 +1164,7 @@ - + @@ -1430,7 +1430,7 @@ - + @@ -1446,7 +1446,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23500-23599.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23500-23599.xml index f7f3f0ee70..23404868f6 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23500-23599.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23500-23599.xml @@ -93,7 +93,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23600-23699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23600-23699.xml index 7cab192d1f..ad58ce77f2 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23600-23699.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/23600-23699.xml @@ -189,7 +189,7 @@ - + @@ -566,7 +566,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/28500-28599.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/28500-28599.xml index e377e0987b..3ed1fb11c0 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/28500-28599.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/28500-28599.xml @@ -43,7 +43,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/29600-29699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/29600-29699.xml index 1879e81694..e7b8533293 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/29600-29699.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/29600-29699.xml @@ -723,7 +723,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/29700-29799.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/29700-29799.xml index 5fa51463ed..5713ef9c0f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/29700-29799.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/29700-29799.xml @@ -1236,7 +1236,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/30300-30399.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/30300-30399.xml index c5f27a86d4..915c50a700 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/30300-30399.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/30300-30399.xml @@ -984,7 +984,7 @@ - + @@ -1008,7 +1008,7 @@ - + @@ -1032,7 +1032,7 @@ - + @@ -1052,7 +1052,7 @@ - + @@ -1075,7 +1075,7 @@ - + @@ -1098,7 +1098,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/34000-34099.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/34000-34099.xml index bb4378e867..a7b6d990ea 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/34000-34099.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/34000-34099.xml @@ -180,7 +180,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -220,7 +220,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/34600-34699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/34600-34699.xml index dc8985131e..8a039e630c 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/34600-34699.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/34600-34699.xml @@ -41,7 +41,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/35600-35699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/35600-35699.xml index 3e6cdd3d1c..27c36d9ad1 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/35600-35699.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/35600-35699.xml @@ -1423,7 +1423,7 @@ - + @@ -1443,7 +1443,7 @@ - + @@ -1463,7 +1463,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/35700-35799.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/35700-35799.xml index 7c74d0f875..a6e83b0d02 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/35700-35799.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/35700-35799.xml @@ -772,7 +772,7 @@ - + @@ -792,7 +792,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/35900-35999.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/35900-35999.xml index fd599e9920..1d667d0aed 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/35900-35999.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/35900-35999.xml @@ -447,7 +447,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/36000-36099.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/36000-36099.xml index c8c649701c..554e0934a1 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/36000-36099.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/36000-36099.xml @@ -377,7 +377,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/36200-36299.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/36200-36299.xml index d553825b36..1af93dac2a 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/36200-36299.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/36200-36299.xml @@ -795,7 +795,7 @@ - + @@ -1083,7 +1083,7 @@ - + @@ -1100,7 +1100,7 @@ - + @@ -1117,7 +1117,7 @@ - + @@ -1134,7 +1134,7 @@ - + @@ -1150,7 +1150,7 @@ - + @@ -1162,7 +1162,7 @@ - + @@ -1214,7 +1214,7 @@ - + @@ -1251,7 +1251,7 @@ - + @@ -1269,7 +1269,7 @@ - + @@ -1287,7 +1287,7 @@ - + @@ -1305,7 +1305,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/36300-36399.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/36300-36399.xml index 965e3dd056..18c49e11bf 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/36300-36399.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/36300-36399.xml @@ -48,7 +48,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -80,7 +80,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -119,7 +119,7 @@ - + @@ -397,7 +397,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/37600-37699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/37600-37699.xml index 6abc25f2ec..9a675b6493 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/37600-37699.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/37600-37699.xml @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/37800-37899.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/37800-37899.xml index a89601452a..bcbf7af0b1 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/37800-37899.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/37800-37899.xml @@ -789,7 +789,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/40000-40099.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/40000-40099.xml index 7eeb3b2830..eb8a65a51a 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/40000-40099.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/40000-40099.xml @@ -829,7 +829,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47300-47399.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47300-47399.xml index 35c5096cfb..c097285fdb 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47300-47399.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47300-47399.xml @@ -1235,7 +1235,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47400-47499.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47400-47499.xml index f4fd7a491e..47fcae4a1d 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47400-47499.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47400-47499.xml @@ -51,7 +51,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -441,7 +441,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -501,7 +501,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47500-47599.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47500-47599.xml index 5205c05d6b..0aba3131bc 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47500-47599.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47500-47599.xml @@ -550,7 +550,7 @@ - + @@ -563,7 +563,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47600-47699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47600-47699.xml index 6c1e7dae4d..f37d008168 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47600-47699.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47600-47699.xml @@ -644,7 +644,7 @@ - + @@ -660,7 +660,7 @@ - + @@ -676,7 +676,7 @@ - + @@ -692,7 +692,7 @@ - + @@ -708,7 +708,7 @@ - + @@ -725,7 +725,7 @@ - + @@ -743,7 +743,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -779,7 +779,7 @@ - + @@ -797,7 +797,7 @@ - + @@ -883,7 +883,7 @@ - + @@ -904,7 +904,7 @@ - + @@ -923,7 +923,7 @@ - + @@ -944,7 +944,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47700-47799.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47700-47799.xml index e96a5d246b..9a9d2355bf 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47700-47799.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/47700-47799.xml @@ -500,7 +500,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -539,7 +539,7 @@ - + @@ -559,7 +559,7 @@ - + @@ -834,7 +834,7 @@ - + @@ -856,7 +856,7 @@ - + @@ -877,7 +877,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48000-48099.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48000-48099.xml index 7510ec365f..7f52d1f96e 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48000-48099.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48000-48099.xml @@ -154,7 +154,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48100-48199.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48100-48199.xml index b9f424964a..6ae10e50ec 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48100-48199.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48100-48199.xml @@ -971,7 +971,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48200-48299.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48200-48299.xml index 09183ce97a..b63b95ca02 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48200-48299.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48200-48299.xml @@ -1205,7 +1205,7 @@ - + @@ -1219,7 +1219,7 @@ - + @@ -1256,7 +1256,7 @@ - + @@ -1273,7 +1273,7 @@ - + @@ -1375,7 +1375,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48300-48399.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48300-48399.xml index 7b378ec7d9..ea581b4575 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48300-48399.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48300-48399.xml @@ -346,7 +346,7 @@ - + @@ -364,7 +364,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48400-48499.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48400-48499.xml index 4ff8ab038a..37910e6e75 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48400-48499.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48400-48499.xml @@ -143,7 +143,7 @@ - + @@ -163,7 +163,7 @@ - + @@ -1383,7 +1383,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48500-48599.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48500-48599.xml index 7320fac069..32921e8983 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48500-48599.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48500-48599.xml @@ -454,7 +454,7 @@ - + @@ -469,7 +469,7 @@ - + @@ -484,7 +484,7 @@ - + @@ -498,7 +498,7 @@ - + @@ -591,7 +591,7 @@ - + @@ -646,7 +646,7 @@ - + @@ -685,7 +685,7 @@ - + @@ -722,7 +722,7 @@ - + @@ -759,7 +759,7 @@ - + @@ -797,7 +797,7 @@ - + @@ -835,7 +835,7 @@ - + @@ -875,7 +875,7 @@ - + @@ -913,7 +913,7 @@ - + @@ -952,7 +952,7 @@ - + @@ -990,7 +990,7 @@ - + @@ -1029,7 +1029,7 @@ - + @@ -1068,7 +1068,7 @@ - + @@ -1104,7 +1104,7 @@ - + @@ -1141,7 +1141,7 @@ - + @@ -1184,7 +1184,7 @@ - + @@ -1199,7 +1199,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48600-48699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48600-48699.xml index 2759cd04fb..06906f0351 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48600-48699.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48600-48699.xml @@ -965,7 +965,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48700-48799.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48700-48799.xml index daab396761..2635e1d69e 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48700-48799.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48700-48799.xml @@ -91,7 +91,7 @@ - + @@ -560,7 +560,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48800-48899.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48800-48899.xml index 16524212b0..c75ba6ba4a 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48800-48899.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/48800-48899.xml @@ -399,7 +399,7 @@ - + @@ -631,7 +631,7 @@ - + @@ -668,7 +668,7 @@ - + @@ -689,7 +689,7 @@ - + @@ -706,7 +706,7 @@ - + @@ -801,7 +801,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80400-80499.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80400-80499.xml index 0ea81dc9be..77a23119ca 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80400-80499.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80400-80499.xml @@ -536,7 +536,7 @@ - + @@ -554,7 +554,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80600-80699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80600-80699.xml index 4515d0b509..ab6c27881b 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80600-80699.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80600-80699.xml @@ -132,7 +132,7 @@ - + @@ -816,7 +816,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80700-80799.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80700-80799.xml index 1c1f548cb1..8920dc1487 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80700-80799.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80700-80799.xml @@ -1042,7 +1042,7 @@ - + @@ -1083,7 +1083,7 @@ - + @@ -1103,7 +1103,7 @@ - + @@ -1284,7 +1284,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80800-80899.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80800-80899.xml index 91c68dd4ec..33f7734e24 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80800-80899.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/80800-80899.xml @@ -189,7 +189,7 @@ - + @@ -217,7 +217,7 @@ - + @@ -245,7 +245,7 @@ - + @@ -276,7 +276,7 @@ - + @@ -417,7 +417,7 @@ - + @@ -529,7 +529,7 @@ - + @@ -570,7 +570,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/81000-81099.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/81000-81099.xml index 7503b29677..69c836b3e1 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/81000-81099.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/81000-81099.xml @@ -160,7 +160,7 @@ - + @@ -178,7 +178,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/81600-81699.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/81600-81699.xml index c5c44a09bf..94cc31f384 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/81600-81699.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/81600-81699.xml @@ -904,7 +904,7 @@ - + @@ -926,7 +926,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/81700-81799.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/81700-81799.xml index 6c7e3ae319..0c549c8497 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/81700-81799.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/items/81700-81799.xml @@ -599,7 +599,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/08800-08899.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/08800-08899.xml index 244696f663..68b6aa7900 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/08800-08899.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/08800-08899.xml @@ -2262,7 +2262,7 @@ 36415 22 - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/21400-21499.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/21400-21499.xml index 6d8a9cbddf..7d08b3e4cd 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/21400-21499.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/21400-21499.xml @@ -1069,7 +1069,7 @@ true true - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/35500-35599.xml b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/35500-35599.xml index 50829995df..f3d4bf2e1c 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/35500-35599.xml +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/stats/skills/35500-35599.xml @@ -751,7 +751,7 @@ 3031 true - + @@ -784,7 +784,7 @@ 3031 true - + @@ -835,7 +835,7 @@ 3031 true - + @@ -862,7 +862,7 @@ 3031 true - + @@ -895,7 +895,7 @@ 3031 true - + @@ -946,7 +946,7 @@ 3031 true - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/GameServer.java index 81f09f2b7d..f7723738b5 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/GameServer.java @@ -73,7 +73,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; import org.l2jmobius.gameserver.data.xml.EquipmentUpgradeData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -403,8 +402,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/Shutdown.java index 9e0bc3126c..02419a263c 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/Shutdown.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.BotReportTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -452,8 +451,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 4400f50f57..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.NOT_ENOUGH_SPACE_IN_THE_INVENTORY_UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 3)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANCE_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { - resetDailyMissionRewards(); + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + resetTimedHuntingZonesWeekly(); + resetThroneOfHeroes(); + } + else + { + resetVitalityDaily(); + } + resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); + resetTimedHuntingZones(); + resetDailyMissionRewards(); resetHomunculusResetPoints(); - onResetTimedHuntingZones(); - onResetAttendanceRewards(); + resetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -88,8 +110,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -107,23 +128,22 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onDailyVitalityReset() + private void resetVitalityDaily() { if (!Config.ENABLE_VITALITY) { return; } - int Vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; for (PlayerInstance player : World.getInstance().getPlayers()) { final int VP = player.getVitalityPoints(); - player.setVitalityPoints(VP + Vitality, false); + player.setVitalityPoints(VP + vitality, false); for (SubClassHolder subclass : player.getSubClasses().values()) { final int VPS = subclass.getVitalityPoints(); - subclass.setVitalityPoints(VPS + Vitality); + subclass.setVitalityPoints(VPS + vitality); } } @@ -150,8 +170,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Daily Vitality Added"); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -192,12 +211,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -302,8 +320,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - @ScheduleTarget - public void onResetThroneOfHeroes() + public void resetThroneOfHeroes() { // Update data for offline players. try (Connection con = DatabaseFactory.getConnection()) @@ -338,7 +355,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Throne of Heroes Entry has been resetted."); } - public void onResetTimedHuntingZones() + public void resetTimedHuntingZones() { for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) { @@ -372,8 +389,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Special Hunting Zones has been resetted."); } - @ScheduleTarget - public void onResetWeeklyTimedHuntingZones() + public void resetTimedHuntingZonesWeekly() { for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) { @@ -440,7 +456,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Homunculus Reset Points has been resetted."); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index b8c6dd4354..1caec8603d 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java index eaf80b8f2b..34aba9caa8 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5045,15 +5045,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Summon.java index ad18df7166..c6074376f8 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 25d04dc5e8..f668b0b805 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -133,7 +133,6 @@ import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -186,7 +185,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -194,7 +192,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -227,7 +224,6 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; import org.l2jmobius.gameserver.model.holders.PlayerCollectionData; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.RecipeHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; @@ -724,10 +720,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -756,7 +748,9 @@ public class PlayerInstance extends Playable private int _lastAmmunitionId = 0; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnSoloEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -2907,11 +2901,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4826,10 +4816,6 @@ public class PlayerInstance extends Playable { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); setTotalDeaths(getTotalDeaths() + 1); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5015,7 +5001,7 @@ public class PlayerInstance extends Playable private Collection onDieDropItem(Creature killer) { final List droppedItems = new ArrayList<>(); - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return droppedItems; } @@ -5368,7 +5354,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8245,7 +8231,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8306,22 +8292,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return isOnSoloEvent() || (getTeam() != attacker.getTeam()); } // Check if the attacker is a Playable @@ -9504,12 +9481,7 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) - { - _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; - return false; - } - if (isOnEvent()) // custom event message + if (_inOlympiadMode || isRegisteredOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_HE_OR_SHE_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11328,12 +11300,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -13218,16 +13184,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13326,21 +13282,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13400,13 +13341,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13420,66 +13354,50 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; + } + + public boolean isOnSoloEvent() + { + return _isOnSoloEvent; + } + + public void setOnSoloEvent(boolean value) + { + _isOnSoloEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -14032,63 +13950,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index 7e68bcfff0..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,669 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 5); // Guessed - final int boxs = Rnd.get(1, 5); - winner.addItem("CoC-Winner", 45584, marksRewarded, winner, true); // Mark of battle - winner.addItem("CoC-Winner", 36333, boxs, winner, true); // Mysterious Box - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 0b10e75f59..94eee3bae6 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERED_IN_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java index fb0f2bb3da..06efad6874 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java @@ -18,7 +18,7 @@ package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; import java.util.List; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; @@ -27,21 +27,21 @@ import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; */ public class OnCeremonyOfChaosMatchResult implements IBaseEvent { - private final List _winners; - private final List _members; + private final List _winners; + private final List _members; - public OnCeremonyOfChaosMatchResult(List winners, List members) + public OnCeremonyOfChaosMatchResult(List winners, List members) { _winners = winners; _members = members; } - public List getWinners() + public List getWinners() { return _winners; } - public List getMembers() + public List getMembers() { return _members; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 197a15f962..9cadbc687e 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANCE_ZONE); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/items/Item.java index 7a1819fabf..4667ed8eee 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -149,7 +148,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -224,7 +223,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -868,9 +867,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -945,11 +944,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 89a093b3a8..3fdf1554bf 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 53e8c48395..45fcf99be4 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 02536bcd12..a5809cf338 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -45,7 +45,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -441,11 +440,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index b03f2213a7..95ea857e10 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 8d08d58882..586cf4c238 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -166,12 +165,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java index 4bdb81ff87..35fc8e1620 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestAcquireAbilityList.java @@ -28,7 +28,6 @@ import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillTreeData; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -95,12 +94,12 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket player.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { player.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java index ebce100c73..dc4e0434d4 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ability/RequestResetAbilityPoint.java @@ -23,7 +23,6 @@ import org.l2jmobius.gameserver.enums.PrivateStoreType; import org.l2jmobius.gameserver.enums.SkillFinishType; import org.l2jmobius.gameserver.model.SkillLearn; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -64,12 +63,12 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket client.sendPacket(SystemMessageId.REACH_LEVEL_85_TO_USE_THE_ABILITY); return; } - else if (player.isInOlympiadMode() || player.isOnEvent(CeremonyOfChaosEvent.class)) + else if (player.isInOlympiadMode()) { client.sendPacket(SystemMessageId.YOU_CANNOT_USE_OR_RESET_ABILITY_POINTS_WHILE_PARTICIPATING_IN_THE_OLYMPIAD_OR_CEREMONY_OF_CHAOS); return; } - else if (player.isOnEvent()) // custom event message + else if (player.isOnEvent()) { player.sendMessage("You cannot use or reset Ability Points while participating in an event."); return; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java index ce871f6a18..88a7ec13b1 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,15 +42,15 @@ public class RequestCancelCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } + // if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); + // player.sendPacket(ExCuriousHouseState.IDLE_PACKET); + // + // if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) + // { + // player.prohibiteCeremonyOfChaos(); + // } + // } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java index a4e6f04627..c9e0872ac9 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; /** * @author Sdw @@ -46,21 +42,21 @@ public class RequestCuriousHouseHtml implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) + // { + // final NpcHtmlMessage message = new NpcHtmlMessage(0); + // message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); + // player.sendPacket(message); + // } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java index 33ca3d7b33..9fd38f3805 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java @@ -17,13 +17,9 @@ package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; /** * @author Sdw @@ -46,25 +42,25 @@ public class RequestJoinCuriousHouse implements IClientIncomingPacket return; } - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } + // if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) + // { + // return; + // } + // else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); + // return; + // } + // + // if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) + // { + // player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); + // player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); + // player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); + // } + // else + // { + // player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); + // } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java index f2e129c77a..7e45b82aac 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/huntingzones/ExTimedHuntingZoneEnter.java @@ -86,7 +86,7 @@ public class ExTimedHuntingZoneEnter implements IClientIncomingPacket player.sendPacket(SystemMessageId.CANNOT_USE_TIME_LIMITED_HUNTING_ZONES_WHILE_WAITING_FOR_THE_OLYMPIAD); return; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("Cannot use time-limited hunting zones while registered on an event."); return; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 74a24bbfb0..a72c4801c4 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -26,8 +26,6 @@ import org.l2jmobius.gameserver.instancemanager.RankManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -123,8 +121,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -267,7 +263,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java index d26eee8d89..7c74a35616 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java @@ -20,7 +20,6 @@ import java.util.Collection; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -31,9 +30,9 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket { private final int _id; private final int _maxPlayers; - private final Collection _players; + private final Collection _players; - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) + public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) { _id = id; _maxPlayers = maxPlayers; @@ -48,25 +47,14 @@ public class ExCuriousHouseMemberList implements IClientOutgoingPacket packet.writeD(_id); packet.writeD(_maxPlayers); packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) + for (PlayerInstance player : _players) { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getMaxHp()); + packet.writeD(player.getMaxCp()); + packet.writeD((int) player.getCurrentHp()); + packet.writeD((int) player.getCurrentCp()); } return true; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java index 1f09c4de0d..27605b732b 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java @@ -16,10 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; +import java.util.Collection; + import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -29,30 +30,30 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; public class ExCuriousHouseResult implements IClientOutgoingPacket { private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; + private final Collection _players; - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) + public ExCuriousHouseResult(CeremonyOfChaosResult result, Collection players) { _result = result; - _event = event; + _players = players; } @Override public boolean write(PacketWriter packet) { OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); + packet.writeD(0); // _event.getId() packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> + packet.writeD(_players.size()); // CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + packet.writeD(_players.size()); + for (PlayerInstance player : _players) { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); + packet.writeD(player.getObjectId()); + packet.writeD(0x00); // cocPlayer.getPosition + packet.writeD(player.getClassId().getId()); + packet.writeD(0x00); // getLifeTime + packet.writeD(0x00); // getScore + } return true; } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/ScrollOfEscape.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/ScrollOfEscape.java index 4c973a0ac7..7d2e2a1476 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/ScrollOfEscape.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/ScrollOfEscape.java @@ -97,7 +97,7 @@ public class ScrollOfEscape implements IItemHandler return; } - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { player.sendMessage("You can't use Scroll of Escape in an event."); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/SummonItems.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/SummonItems.java index 81ab1bdb79..3c8d7e7f83 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/SummonItems.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/itemhandlers/SummonItems.java @@ -57,7 +57,7 @@ public class SummonItems implements IItemHandler return; } - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { playable.sendPacket(ActionFailed.STATIC_PACKET); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/ClanGate.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/ClanGate.java index 019c6803fe..0eb695ddab 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/ClanGate.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/ClanGate.java @@ -53,7 +53,7 @@ public class ClanGate implements ISkillHandler return; } - if (player.isOnCustomEvent() || player.isInsideZone(ZoneId.NO_LANDING) || player.isInOlympiadMode() || player.isInsideZone(ZoneId.PVP) || (GrandBossManager.getInstance().getZone(player) != null)) + if (player.isOnEvent() || player.isInsideZone(ZoneId.NO_LANDING) || player.isInOlympiadMode() || player.isInsideZone(ZoneId.PVP) || (GrandBossManager.getInstance().getZone(player) != null)) { player.sendMessage("Cannot open the portal here."); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/Recall.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/Recall.java index f3e80463b9..9fa092cd72 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/Recall.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/Recall.java @@ -88,7 +88,7 @@ public class Recall implements ISkillHandler continue; } - if (targetChar.isOnCustomEvent()) + if (targetChar.isOnEvent()) { targetChar.sendMessage("You can't use escape skill in an event."); continue; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java index 0df83e6dec..afceee2033 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java @@ -58,7 +58,7 @@ public class SummonFriend implements ISkillHandler return; } - if (activePlayer.isOnCustomEvent()) + if (activePlayer.isOnEvent()) { activePlayer.sendMessage("You cannot use this skill in an Event."); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/usercommandhandlers/Escape.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/usercommandhandlers/Escape.java index 1bd27fe082..7b920e5c9b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/usercommandhandlers/Escape.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/usercommandhandlers/Escape.java @@ -48,7 +48,7 @@ public class Escape implements IUserCommandHandler } // Check to see if the current player is in an event. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { player.sendMessage("You may not use an escape skill in an event."); return false; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/usercommandhandlers/OfflineShop.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/usercommandhandlers/OfflineShop.java index 642f015a5c..f6d7b05be0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/usercommandhandlers/OfflineShop.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/usercommandhandlers/OfflineShop.java @@ -57,7 +57,7 @@ public class OfflineShop implements IUserCommandHandler return false; } - if (player.isOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot logout while registered in an event."); player.sendPacket(ActionFailed.STATIC_PACKET); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/OfflineShop.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/OfflineShop.java index c45a71203b..e57a6ef224 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/OfflineShop.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/OfflineShop.java @@ -58,7 +58,7 @@ public class OfflineShop implements IVoicedCommandHandler return false; } - if (player.isOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot Logout while registered in an event."); player.sendPacket(ActionFailed.STATIC_PACKET); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/Wedding.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/Wedding.java index dc6ef9cccd..17f7556d11 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/Wedding.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/Wedding.java @@ -52,7 +52,7 @@ public class Wedding implements IVoicedCommandHandler @Override public boolean useVoicedCommand(String command, PlayerInstance activeChar, String target) { - if (activeChar.isRegisteredOnCustomEvent() || activeChar.isInOlympiadMode()) + if (activeChar.isRegisteredOnEvent() || activeChar.isInOlympiadMode()) { activeChar.sendMessage("Sorry, you have registered in an event."); return false; @@ -227,7 +227,7 @@ public class Wedding implements IVoicedCommandHandler } // Check to see if the current player is in an event. - if (activeChar.isOnCustomEvent()) + if (activeChar.isOnEvent()) { activeChar.sendMessage("You are in an event."); return false; @@ -263,7 +263,7 @@ public class Wedding implements IVoicedCommandHandler activeChar.sendMessage("Your partner is in the Olympiad now."); return false; } - else if (partner.isOnCustomEvent()) + else if (partner.isOnEvent()) { activeChar.sendMessage("Your partner is in an event."); return false; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java index e7a30f5242..e2131c4baa 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java @@ -156,7 +156,7 @@ public class PrecautionaryRestartManager return true; } - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { return true; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/Skill.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/Skill.java index 2ec933ceaa..b8f1522ca5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/Skill.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/Skill.java @@ -1764,7 +1764,7 @@ public abstract class Skill continue; } // if src is in event and trg not or viceversa - if ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent())) + if ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent())) { continue; } @@ -1777,7 +1777,7 @@ public abstract class Skill continue; } // if src is in event and trg not or viceversa - if ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent())) + if ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent())) { continue; } @@ -1907,7 +1907,7 @@ public abstract class Skill continue; } // if src is in event and trg not or viceversa - if ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent())) + if ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent())) { continue; } @@ -1920,7 +1920,7 @@ public abstract class Skill continue; } // if src is in event and trg not or viceversa - if ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent())) + if ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent())) { continue; } @@ -1989,7 +1989,7 @@ public abstract class Skill } final PlayerInstance trg = partyMember; // if src is in event and trg not or viceversa - if ((src != null) && ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent()))) + if ((src != null) && ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent()))) { continue; } @@ -2114,7 +2114,7 @@ public abstract class Skill final PlayerInstance trg = newTarget; final PlayerInstance src = player; // if src is in event and trg not or viceversa - if ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent())) + if ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent())) { continue; } @@ -2364,7 +2364,7 @@ public abstract class Skill } // if src is in event and trg not or viceversa - if ((src != null) && (trg != null) && ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent()))) + if ((src != null) && (trg != null) && ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent()))) { continue; } @@ -2836,12 +2836,12 @@ public abstract class Skill } // if src is in event and trg not OR viceversa, the target must be not attackable - if ((activeCh.isOnCustomEvent() && !targetChar.isOnCustomEvent()) || (targetChar.isOnCustomEvent() && !activeCh.isOnCustomEvent())) + if ((activeCh.isOnEvent() && !targetChar.isOnEvent()) || (targetChar.isOnEvent() && !activeCh.isOnEvent())) { return true; } - if (activeCh.isOnCustomEvent() && targetChar.isOnCustomEvent()) + if (activeCh.isOnEvent() && targetChar.isOnEvent()) { return false; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java index 92870b58f3..65543f6f01 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -6293,7 +6293,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder return false; } - if (dst.isOnCustomEvent() && src.isOnCustomEvent()) + if (dst.isOnEvent() && src.isOnEvent()) { return false; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Playable.java index 1fb084b738..4f6ee725e0 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -445,7 +445,7 @@ public abstract class Playable extends Creature _lastCharmOfLuckEffect = null; } - public boolean isOnCustomEvent() + public boolean isOnEvent() { return false; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Summon.java index c9acf398df..a18c940fe9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -819,9 +819,9 @@ public abstract class Summon extends Playable } @Override - public boolean isOnCustomEvent() + public boolean isOnEvent() { - return (_owner != null) && _owner.isOnCustomEvent(); + return (_owner != null) && _owner.isOnEvent(); } @Override diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/ObservationInstance.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/ObservationInstance.java index 07ada4c532..6689b0e537 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/ObservationInstance.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/ObservationInstance.java @@ -52,7 +52,7 @@ public class ObservationInstance extends FolkInstance return; } - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You already participate in an event!"); player.sendPacket(ActionFailed.STATIC_PACKET); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/OlympiadManagerInstance.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/OlympiadManagerInstance.java index 5caeab9b0c..168adccc09 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/OlympiadManagerInstance.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/OlympiadManagerInstance.java @@ -107,7 +107,7 @@ public class OlympiadManagerInstance extends FolkInstance } case 4: { - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You are already registered in an event."); return; @@ -117,7 +117,7 @@ public class OlympiadManagerInstance extends FolkInstance } case 5: { - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You are already registered in an event."); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 5538fed51f..5050f83a67 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -398,8 +398,8 @@ public class PlayerInstance extends Playable private final int[] _loto = new int[5]; private final int[] _race = new int[2]; private final BlockList _blockList = new BlockList(this); - private boolean _isRegisteredOnCustomEvent = false; - private boolean _isOnCustomEvent = false; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private int _team = 0; private int _alliedVarkaKetra = 0; private int _hasCoupon = 0; @@ -5607,7 +5607,7 @@ public class PlayerInstance extends Playable */ private void onDieDropItem(Creature killer) { - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -5728,7 +5728,7 @@ public class PlayerInstance extends Playable return; } - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -5795,7 +5795,7 @@ public class PlayerInstance extends Playable } // 'No war' or 'One way war' -> 'Normal PK' - if (!isOnCustomEvent()) + if (!isOnEvent()) { if (targetPlayer.getKarma() > 0) // Target player has karma { @@ -5824,7 +5824,7 @@ public class PlayerInstance extends Playable AnnouncementsTable.getInstance().announceToAll("Player " + getName() + " killed Player " + target.getName()); } - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -5972,7 +5972,7 @@ public class PlayerInstance extends Playable */ public void increasePvpKills() { - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -6017,7 +6017,7 @@ public class PlayerInstance extends Playable */ public void increasePkKillsAndKarma(int targLVL) { - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -6138,7 +6138,7 @@ public class PlayerInstance extends Playable */ public void updatePvPStatus() { - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -6176,7 +6176,7 @@ public class PlayerInstance extends Playable return; } - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -6258,7 +6258,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!isOnCustomEvent()) + if (!isOnEvent()) { final byte maxLevel = ExperienceData.getInstance().getMaxLevel(); if (lvl < maxLevel) @@ -8937,26 +8937,13 @@ public class PlayerInstance extends Playable } } - if ((attacker instanceof Playable) && isOnCustomEvent()) + // Check if the attacker is in an event + if (isOnEvent() && (attacker instanceof Playable)) { - PlayerInstance player = null; - if (attacker instanceof PlayerInstance) + final PlayerInstance player = attacker.getActingPlayer(); + if ((player != null) && player.isOnEvent()) { - player = (PlayerInstance) attacker; - } - else if (attacker instanceof Summon) - { - player = ((Summon) attacker).getOwner(); - } - - if (player != null) - { - // checks for events - if (player.isOnCustomEvent()) - { - return (isOnCustomEvent() && player.isOnCustomEvent() && (getTeam() != player.getTeam())); - } - return false; + return getTeam() != player.getTeam(); } } @@ -9707,9 +9694,9 @@ public class PlayerInstance extends Playable WorldObject target = worldObject; // Check if player and target are in events and on the same team. - if ((target instanceof PlayerInstance) && isOnCustomEvent() && skill.isOffensive()) + if ((target instanceof PlayerInstance) && isOnEvent() && skill.isOffensive()) { - return target.getActingPlayer().isOnCustomEvent() && (getTeam() != target.getActingPlayer().getTeam()); + return target.getActingPlayer().isOnEvent() && (getTeam() != target.getActingPlayer().getTeam()); } // check for PC->PC Pvp status @@ -10994,25 +10981,25 @@ public class PlayerInstance extends Playable return _lvlJoinedAcademy > 0; } - public boolean isRegisteredOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isRegisteredOnCustomEvent || _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setRegisteredOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isRegisteredOnCustomEvent = value; + _isRegisteredOnEvent = value; } @Override - public boolean isOnCustomEvent() + public boolean isOnEvent() { - return _isOnCustomEvent; + return _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setOnEvent(boolean value) { - _isOnCustomEvent = value; + _isOnEvent = value; } /** @@ -11912,7 +11899,7 @@ public class PlayerInstance extends Playable getParty().getDimensionalRift().memberRessurected(this); } - if (isOnCustomEvent()) + if (isOnEvent()) { getStatus().setCurrentHp(getMaxHp()); getStatus().setCurrentMp(getMaxMp()); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java index dc093b114d..078f6fb840 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java @@ -335,7 +335,7 @@ public class VillageMasterInstance extends FolkInstance } // You can't add subclass when you are registered in an event. - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You can't add a subclass while in an event."); player.setLocked(false); @@ -436,7 +436,7 @@ public class VillageMasterInstance extends FolkInstance } // You can't change subclass when you are registered in an event. - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You can't change subclass while in an event."); player.setLocked(false); @@ -497,7 +497,7 @@ public class VillageMasterInstance extends FolkInstance } // You can't delete subclass when you are registered in an event. - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You can't delete a subclass while in an event."); player.setLocked(false); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/olympiad/Olympiad.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/olympiad/Olympiad.java index ed4950b9d8..191026ffe9 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/olympiad/Olympiad.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/olympiad/Olympiad.java @@ -1034,7 +1034,7 @@ public class Olympiad return; } - if (spectator.isRegisteredOnCustomEvent()) + if (spectator.isRegisteredOnEvent()) { spectator.sendMessage("You are already registered in an event."); return; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java index 04afff2b36..5932350921 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java @@ -98,7 +98,7 @@ public class AttackRequest implements IClientIncomingPacket } // No attacks to same team in event - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (target instanceof PlayerInstance) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index d4f0d1f398..7b4a3c8b41 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -50,7 +50,7 @@ public class Logout implements IClientIncomingPacket return; } - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot logout while registered in an event."); player.sendPacket(ActionFailed.STATIC_PACKET); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java index 3aed06cf05..d07c6e2363 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java @@ -185,7 +185,7 @@ public class RequestActionUse implements IClientIncomingPacket return; } - if ((target instanceof PlayerInstance) && !player.getAccessLevel().allowPeaceAttack() && Creature.isInsidePeaceZone(pet, target) && (!player.isOnCustomEvent() || !((PlayerInstance) target).isOnCustomEvent())) + if ((target instanceof PlayerInstance) && !player.getAccessLevel().allowPeaceAttack() && Creature.isInsidePeaceZone(pet, target) && (!player.isOnEvent() || !((PlayerInstance) target).isOnEvent())) { player.sendPacket(SystemMessageId.YOU_MAY_NOT_ATTACK_THIS_TARGET_IN_A_PEACEFUL_ZONE); return; @@ -277,7 +277,7 @@ public class RequestActionUse implements IClientIncomingPacket // A strider cannot be ridden while in battle player.sendPacket(new SystemMessage(SystemMessageId.A_STRIDER_CANNOT_BE_RIDDEN_WHILE_IN_BATTLE)); } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { // A strider cannot be ridden while in event player.sendPacket(new SystemMessage(SystemMessageId.A_STRIDER_CANNOT_BE_RIDDEN_WHILE_IN_BATTLE)); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 7958abb824..fff432b956 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -117,7 +117,7 @@ public class RequestRestart implements IClientIncomingPacket } // Check if player is in an event. - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You can't restart while registered in an event."); player.sendPacket(RestartResponse.valueOf(false)); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 5ef9b69037..b8810d2abe 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -74,7 +74,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { // This is an example, replace EventScriptName with proper event script name. final Quest eventScript = QuestManager.getInstance().getQuest("EventScriptName"); @@ -111,7 +111,7 @@ public class RequestRestartPoint implements IClientIncomingPacket @Override public void run() { - if (_player.isOnCustomEvent()) + if (_player.isOnEvent()) { _player.sendMessage("You cannot do that while participating in an event!"); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/ScrollOfEscape.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/ScrollOfEscape.java index bdc2c28a83..2f9e2871da 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/ScrollOfEscape.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/ScrollOfEscape.java @@ -97,7 +97,7 @@ public class ScrollOfEscape implements IItemHandler return; } - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { player.sendMessage("You can't use Scroll of Escape in an event."); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/SummonItems.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/SummonItems.java index 1973c190a0..235a32b5b0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/SummonItems.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/itemhandlers/SummonItems.java @@ -57,7 +57,7 @@ public class SummonItems implements IItemHandler return; } - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { playable.sendPacket(ActionFailed.STATIC_PACKET); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/ClanGate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/ClanGate.java index 019c6803fe..0eb695ddab 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/ClanGate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/ClanGate.java @@ -53,7 +53,7 @@ public class ClanGate implements ISkillHandler return; } - if (player.isOnCustomEvent() || player.isInsideZone(ZoneId.NO_LANDING) || player.isInOlympiadMode() || player.isInsideZone(ZoneId.PVP) || (GrandBossManager.getInstance().getZone(player) != null)) + if (player.isOnEvent() || player.isInsideZone(ZoneId.NO_LANDING) || player.isInOlympiadMode() || player.isInsideZone(ZoneId.PVP) || (GrandBossManager.getInstance().getZone(player) != null)) { player.sendMessage("Cannot open the portal here."); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Recall.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Recall.java index 160d305883..64ba290686 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Recall.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/Recall.java @@ -88,7 +88,7 @@ public class Recall implements ISkillHandler continue; } - if (targetChar.isOnCustomEvent()) + if (targetChar.isOnEvent()) { targetChar.sendMessage("You can't use escape skill in an event."); continue; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java index 0df83e6dec..afceee2033 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/SummonFriend.java @@ -58,7 +58,7 @@ public class SummonFriend implements ISkillHandler return; } - if (activePlayer.isOnCustomEvent()) + if (activePlayer.isOnEvent()) { activePlayer.sendMessage("You cannot use this skill in an Event."); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/usercommandhandlers/Escape.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/usercommandhandlers/Escape.java index 1bd27fe082..7b920e5c9b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/usercommandhandlers/Escape.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/usercommandhandlers/Escape.java @@ -48,7 +48,7 @@ public class Escape implements IUserCommandHandler } // Check to see if the current player is in an event. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { player.sendMessage("You may not use an escape skill in an event."); return false; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/usercommandhandlers/OfflineShop.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/usercommandhandlers/OfflineShop.java index 642f015a5c..f6d7b05be0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/usercommandhandlers/OfflineShop.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/usercommandhandlers/OfflineShop.java @@ -57,7 +57,7 @@ public class OfflineShop implements IUserCommandHandler return false; } - if (player.isOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot logout while registered in an event."); player.sendPacket(ActionFailed.STATIC_PACKET); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/OfflineShop.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/OfflineShop.java index c45a71203b..e57a6ef224 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/OfflineShop.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/OfflineShop.java @@ -58,7 +58,7 @@ public class OfflineShop implements IVoicedCommandHandler return false; } - if (player.isOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot Logout while registered in an event."); player.sendPacket(ActionFailed.STATIC_PACKET); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/Wedding.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/Wedding.java index 25ed20636e..94220af1e1 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/Wedding.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/voicedcommandhandlers/Wedding.java @@ -52,7 +52,7 @@ public class Wedding implements IVoicedCommandHandler @Override public boolean useVoicedCommand(String command, PlayerInstance activeChar, String target) { - if (activeChar.isRegisteredOnCustomEvent() || activeChar.isInOlympiadMode()) + if (activeChar.isRegisteredOnEvent() || activeChar.isInOlympiadMode()) { activeChar.sendMessage("Sorry, you have registered in an event."); return false; @@ -227,7 +227,7 @@ public class Wedding implements IVoicedCommandHandler } // Check to see if the current player is in an event. - if (activeChar.isOnCustomEvent()) + if (activeChar.isOnEvent()) { activeChar.sendMessage("You are in an event."); return false; @@ -263,7 +263,7 @@ public class Wedding implements IVoicedCommandHandler activeChar.sendMessage("Your partner is in the Olympiad now."); return false; } - else if (partner.isOnCustomEvent()) + else if (partner.isOnEvent()) { activeChar.sendMessage("Your partner is in an event."); return false; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java index e7a30f5242..e2131c4baa 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java @@ -156,7 +156,7 @@ public class PrecautionaryRestartManager return true; } - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { return true; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Skill.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Skill.java index f517fcaebc..a4571221cf 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Skill.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Skill.java @@ -1765,7 +1765,7 @@ public abstract class Skill continue; } // if src is in event and trg not or viceversa - if ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent())) + if ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent())) { continue; } @@ -1778,7 +1778,7 @@ public abstract class Skill continue; } // if src is in event and trg not or viceversa - if ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent())) + if ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent())) { continue; } @@ -1908,7 +1908,7 @@ public abstract class Skill continue; } // if src is in event and trg not or viceversa - if ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent())) + if ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent())) { continue; } @@ -1921,7 +1921,7 @@ public abstract class Skill continue; } // if src is in event and trg not or viceversa - if ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent())) + if ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent())) { continue; } @@ -1990,7 +1990,7 @@ public abstract class Skill } final PlayerInstance trg = partyMember; // if src is in event and trg not or viceversa - if ((src != null) && ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent()))) + if ((src != null) && ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent()))) { continue; } @@ -2123,7 +2123,7 @@ public abstract class Skill final PlayerInstance trg = newTarget; final PlayerInstance src = player; // if src is in event and trg not or viceversa - if ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent())) + if ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent())) { continue; } @@ -2373,7 +2373,7 @@ public abstract class Skill } // if src is in event and trg not or viceversa - if ((src != null) && (trg != null) && ((src.isOnCustomEvent() && !trg.isOnCustomEvent()) || (trg.isOnCustomEvent() && !src.isOnCustomEvent()))) + if ((src != null) && (trg != null) && ((src.isOnEvent() && !trg.isOnEvent()) || (trg.isOnEvent() && !src.isOnEvent()))) { continue; } @@ -2851,12 +2851,12 @@ public abstract class Skill } // if src is in event and trg not OR viceversa, the target must be not attackable - if ((activeCh.isOnCustomEvent() && !targetChar.isOnCustomEvent()) || (targetChar.isOnCustomEvent() && !activeCh.isOnCustomEvent())) + if ((activeCh.isOnEvent() && !targetChar.isOnEvent()) || (targetChar.isOnEvent() && !activeCh.isOnEvent())) { return true; } - if (activeCh.isOnCustomEvent() && targetChar.isOnCustomEvent()) + if (activeCh.isOnEvent() && targetChar.isOnEvent()) { return false; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index c8ea90a00e..952b44d882 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -6340,7 +6340,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder return false; } - if (dst.isOnCustomEvent() && src.isOnCustomEvent()) + if (dst.isOnEvent() && src.isOnEvent()) { return false; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java index 1fb084b738..4f6ee725e0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -445,7 +445,7 @@ public abstract class Playable extends Creature _lastCharmOfLuckEffect = null; } - public boolean isOnCustomEvent() + public boolean isOnEvent() { return false; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java index c9acf398df..a18c940fe9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -819,9 +819,9 @@ public abstract class Summon extends Playable } @Override - public boolean isOnCustomEvent() + public boolean isOnEvent() { - return (_owner != null) && _owner.isOnCustomEvent(); + return (_owner != null) && _owner.isOnEvent(); } @Override diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ObservationInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ObservationInstance.java index 07ada4c532..6689b0e537 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ObservationInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ObservationInstance.java @@ -52,7 +52,7 @@ public class ObservationInstance extends FolkInstance return; } - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You already participate in an event!"); player.sendPacket(ActionFailed.STATIC_PACKET); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/OlympiadManagerInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/OlympiadManagerInstance.java index 5caeab9b0c..168adccc09 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/OlympiadManagerInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/OlympiadManagerInstance.java @@ -107,7 +107,7 @@ public class OlympiadManagerInstance extends FolkInstance } case 4: { - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You are already registered in an event."); return; @@ -117,7 +117,7 @@ public class OlympiadManagerInstance extends FolkInstance } case 5: { - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You are already registered in an event."); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 65e9c74a7b..80718efb19 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -411,8 +411,8 @@ public class PlayerInstance extends Playable private final int[] _loto = new int[5]; private final int[] _race = new int[2]; private final BlockList _blockList = new BlockList(this); - private boolean _isRegisteredOnCustomEvent = false; - private boolean _isOnCustomEvent = false; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private int _team = 0; private int _alliedVarkaKetra = 0; private int _hasCoupon = 0; @@ -5714,7 +5714,7 @@ public class PlayerInstance extends Playable */ private void onDieDropItem(Creature killer) { - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -5836,7 +5836,7 @@ public class PlayerInstance extends Playable return; } - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -5928,7 +5928,7 @@ public class PlayerInstance extends Playable } // 'No war' or 'One way war' -> 'Normal PK' - if (!isOnCustomEvent()) + if (!isOnEvent()) { if (targetPlayer.getKarma() > 0) // Target player has karma { @@ -5957,7 +5957,7 @@ public class PlayerInstance extends Playable AnnouncementsTable.getInstance().announceToAll("Player " + getName() + " killed Player " + target.getName()); } - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -6105,7 +6105,7 @@ public class PlayerInstance extends Playable */ public void increasePvpKills() { - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -6150,7 +6150,7 @@ public class PlayerInstance extends Playable */ public void increasePkKillsAndKarma(int targLVL) { - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -6271,7 +6271,7 @@ public class PlayerInstance extends Playable */ public void updatePvPStatus() { - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -6309,7 +6309,7 @@ public class PlayerInstance extends Playable return; } - if (isOnCustomEvent()) + if (isOnEvent()) { return; } @@ -6391,7 +6391,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!isOnCustomEvent()) + if (!isOnEvent()) { final byte maxLevel = ExperienceData.getInstance().getMaxLevel(); if (lvl < maxLevel) @@ -9089,26 +9089,13 @@ public class PlayerInstance extends Playable } } - if ((attacker instanceof Playable) && isOnCustomEvent()) + // Check if the attacker is in an event + if (isOnEvent() && (attacker instanceof Playable)) { - PlayerInstance player = null; - if (attacker instanceof PlayerInstance) + final PlayerInstance player = attacker.getActingPlayer(); + if ((player != null) && player.isOnEvent()) { - player = (PlayerInstance) attacker; - } - else if (attacker instanceof Summon) - { - player = ((Summon) attacker).getOwner(); - } - - if (player != null) - { - // checks for events - if (player.isOnCustomEvent()) - { - return (isOnCustomEvent() && player.isOnCustomEvent() && (getTeam() != player.getTeam())); - } - return false; + return getTeam() != player.getTeam(); } } @@ -9873,9 +9860,9 @@ public class PlayerInstance extends Playable WorldObject target = worldObject; // Check if player and target are in events and on the same team. - if ((target instanceof PlayerInstance) && isOnCustomEvent() && skill.isOffensive()) + if ((target instanceof PlayerInstance) && isOnEvent() && skill.isOffensive()) { - return target.getActingPlayer().isOnCustomEvent() && (getTeam() != target.getActingPlayer().getTeam()); + return target.getActingPlayer().isOnEvent() && (getTeam() != target.getActingPlayer().getTeam()); } // check for PC->PC Pvp status @@ -11289,25 +11276,25 @@ public class PlayerInstance extends Playable return _lvlJoinedAcademy > 0; } - public boolean isRegisteredOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isRegisteredOnCustomEvent || _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setRegisteredOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isRegisteredOnCustomEvent = value; + _isRegisteredOnEvent = value; } @Override - public boolean isOnCustomEvent() + public boolean isOnEvent() { - return _isOnCustomEvent; + return _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setOnEvent(boolean value) { - _isOnCustomEvent = value; + _isOnEvent = value; } /** @@ -12217,7 +12204,7 @@ public class PlayerInstance extends Playable getParty().getDimensionalRift().memberRessurected(this); } - if (isOnCustomEvent()) + if (isOnEvent()) { getStatus().setCurrentHp(getMaxHp()); getStatus().setCurrentMp(getMaxMp()); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java index 520d3c324c..9a2fa79072 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java @@ -341,7 +341,7 @@ public class VillageMasterInstance extends FolkInstance } // You can't add subclass when you are registered in an event. - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You can't add a subclass while in an event."); player.setLocked(false); @@ -442,7 +442,7 @@ public class VillageMasterInstance extends FolkInstance } // You can't change subclass when you are registered in an event. - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You can't change subclass while in an event."); player.setLocked(false); @@ -503,7 +503,7 @@ public class VillageMasterInstance extends FolkInstance } // You can't delete subclass when you are registered in an event. - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You can't delete a subclass while in an event."); player.setLocked(false); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/olympiad/Olympiad.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/olympiad/Olympiad.java index 4677bd6fa3..b741d7eb3c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/olympiad/Olympiad.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/olympiad/Olympiad.java @@ -1042,7 +1042,7 @@ public class Olympiad return; } - if (spectator.isRegisteredOnCustomEvent()) + if (spectator.isRegisteredOnEvent()) { spectator.sendMessage("You are already registered in an event."); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java index 04afff2b36..5932350921 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/AttackRequest.java @@ -98,7 +98,7 @@ public class AttackRequest implements IClientIncomingPacket } // No attacks to same team in event - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (target instanceof PlayerInstance) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index d4f0d1f398..7b4a3c8b41 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -50,7 +50,7 @@ public class Logout implements IClientIncomingPacket return; } - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot logout while registered in an event."); player.sendPacket(ActionFailed.STATIC_PACKET); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java index 4c95b8673b..5053923ca7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestActionUse.java @@ -185,7 +185,7 @@ public class RequestActionUse implements IClientIncomingPacket return; } - if ((target instanceof PlayerInstance) && !player.getAccessLevel().allowPeaceAttack() && Creature.isInsidePeaceZone(pet, target) && (!player.isOnCustomEvent() || !((PlayerInstance) target).isOnCustomEvent())) + if ((target instanceof PlayerInstance) && !player.getAccessLevel().allowPeaceAttack() && Creature.isInsidePeaceZone(pet, target) && (!player.isOnEvent() || !((PlayerInstance) target).isOnEvent())) { player.sendPacket(SystemMessageId.YOU_MAY_NOT_ATTACK_THIS_TARGET_IN_A_PEACEFUL_ZONE); return; @@ -277,7 +277,7 @@ public class RequestActionUse implements IClientIncomingPacket // A strider cannot be ridden while in battle player.sendPacket(new SystemMessage(SystemMessageId.A_STRIDER_CANNOT_BE_RIDDEN_WHILE_IN_BATTLE)); } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { // A strider cannot be ridden while in event player.sendPacket(new SystemMessage(SystemMessageId.A_STRIDER_CANNOT_BE_RIDDEN_WHILE_IN_BATTLE)); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 37652e1724..cf018c068b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -118,7 +118,7 @@ public class RequestRestart implements IClientIncomingPacket } // Check if player is in an event. - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You can't restart while registered in an event."); player.sendPacket(RestartResponse.valueOf(false)); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 5ef9b69037..b8810d2abe 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -74,7 +74,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { // This is an example, replace EventScriptName with proper event script name. final Quest eventScript = QuestManager.getInstance().getQuest("EventScriptName"); @@ -111,7 +111,7 @@ public class RequestRestartPoint implements IClientIncomingPacket @Override public void run() { - if (_player.isOnCustomEvent()) + if (_player.isOnEvent()) { _player.sendMessage("You cannot do that while participating in an event!"); return; diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/ai/areas/Hellbound/AI/NPC/Warpgate/Warpgate.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/ai/areas/Hellbound/AI/NPC/Warpgate/Warpgate.java index acb63b1d0d..1a60c7100f 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/ai/areas/Hellbound/AI/NPC/Warpgate/Warpgate.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/ai/areas/Hellbound/AI/NPC/Warpgate/Warpgate.java @@ -95,7 +95,7 @@ public class Warpgate extends AbstractNpcAI if (creature.isPlayer()) { final PlayerInstance player = creature.getActingPlayer(); - if (!canEnter(player) && !player.canOverrideCond(PlayerCondOverride.ZONE_CONDITIONS) && !player.isOnCustomEvent()) + if (!canEnter(player) && !player.canOverrideCond(PlayerCondOverride.ZONE_CONDITIONS) && !player.isOnEvent()) { startQuestTimer("TELEPORT", 1000, null, player); } diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/bypasshandlers/Observation.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/bypasshandlers/Observation.java index f5c46a8ab1..a8d1734627 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/bypasshandlers/Observation.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/bypasshandlers/Observation.java @@ -100,7 +100,7 @@ public class Observation implements IBypassHandler player.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_SIEGE_WITH_A_PET_OR_SERVITOR_SUMMONED); return false; } - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("Cannot use while registered on an event"); return false; diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/communityboard/HomeBoard.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/communityboard/HomeBoard.java index 78c325f532..348370a3e7 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/communityboard/HomeBoard.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/communityboard/HomeBoard.java @@ -90,7 +90,7 @@ public class HomeBoard implements IParseBoardHandler break; } } - return commandCheck && (player.isCastingNow() || player.isCastingSimultaneouslyNow() || player.isInCombat() || player.isInDuel() || player.isInOlympiadMode() || player.isInsideZone(ZoneId.SIEGE) || player.isInsideZone(ZoneId.PVP) || (player.getPvpFlag() > 0) || player.isAlikeDead() || player.isOnCustomEvent()); + return commandCheck && (player.isCastingNow() || player.isCastingSimultaneouslyNow() || player.isInCombat() || player.isInDuel() || player.isInOlympiadMode() || player.isInsideZone(ZoneId.SIEGE) || player.isInsideZone(ZoneId.PVP) || (player.getPvpFlag() > 0) || player.isAlikeDead() || player.isOnEvent()); }; private static final Predicate KARMA_CHECK = player -> Config.COMMUNITYBOARD_KARMA_DISABLED && (player.getKarma() > 0); diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/CallPc.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/CallPc.java index 29df63d6cb..13f0719c04 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/CallPc.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/CallPc.java @@ -139,7 +139,7 @@ public class CallPc extends AbstractEffect return false; } - if (target.isFestivalParticipant() || target.isFlyingMounted() || target.isCombatFlagEquipped() || !target.isOnCustomEvent()) + if (target.isFestivalParticipant() || target.isFlyingMounted() || target.isCombatFlagEquipped() || !target.isOnEvent()) { activeChar.sendPacket(SystemMessageId.YOUR_TARGET_IS_IN_AN_AREA_WHICH_BLOCKS_SUMMONING); return false; diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java index a45ca0874f..658ae944d8 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java @@ -40,7 +40,7 @@ public class ItemSkillsTemplate implements IItemHandler return false; } - if (playable.isOnCustomEvent()) + if (playable.isOnEvent()) { playable.sendPacket(ActionFailed.STATIC_PACKET); return false; diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java index a0413c7413..d81159c992 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java @@ -38,7 +38,7 @@ public class SummonItems extends ItemSkillsTemplate return false; } - if (playable.isOnCustomEvent()) + if (playable.isOnEvent()) { return false; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/Clan.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/Clan.java index 852ae47cc9..0773916ae7 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/Clan.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/Clan.java @@ -100,7 +100,7 @@ public class Clan implements ITargetTypeHandler continue; } - if (player.isOnCustomEvent() && obj.isOnCustomEvent() && (player.getTeam() != obj.getTeam())) + if (player.isOnEvent() && obj.isOnEvent() && (player.getTeam() != obj.getTeam())) { continue; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/CorpseClan.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/CorpseClan.java index 908185dc58..13801ef947 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/CorpseClan.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/CorpseClan.java @@ -87,7 +87,7 @@ public class CorpseClan implements ITargetTypeHandler continue; } - if (player.isOnCustomEvent() && obj.isOnCustomEvent() && (player.getTeam() != obj.getTeam())) + if (player.isOnEvent() && obj.isOnEvent() && (player.getTeam() != obj.getTeam())) { continue; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/PartyClan.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/PartyClan.java index 9411bebca4..784bfad04f 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/PartyClan.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/PartyClan.java @@ -117,7 +117,7 @@ public class PartyClan implements ITargetTypeHandler continue; } - if (player.isOnCustomEvent() && obj.isOnCustomEvent() && (player.getTeam() != obj.getTeam())) + if (player.isOnEvent() && obj.isOnEvent() && (player.getTeam() != obj.getTeam())) { continue; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/usercommandhandlers/Unstuck.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/usercommandhandlers/Unstuck.java index 83a5465066..8154e9959d 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/usercommandhandlers/Unstuck.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/usercommandhandlers/Unstuck.java @@ -44,7 +44,7 @@ public class Unstuck implements IUserCommandHandler @Override public boolean useUserCommand(int id, PlayerInstance player) { - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendPacket(ActionFailed.STATIC_PACKET); return false; diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java index a3d2f21f11..e4bbe4db4a 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java @@ -289,7 +289,7 @@ public class Wedding implements IVoicedCommandHandler return false; } - if (activeChar.isRegisteredOnCustomEvent()) + if (activeChar.isRegisteredOnEvent()) { activeChar.sendMessage("You are registered in an event."); return false; @@ -368,7 +368,7 @@ public class Wedding implements IVoicedCommandHandler return false; } - if (partner.isRegisteredOnCustomEvent()) + if (partner.isRegisteredOnEvent()) { activeChar.sendMessage("Your partner is registered in an event."); return false; diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 402b3d5b16..6527768851 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -170,7 +170,7 @@ public class HandysBlockCheckerManager return false; } - if (player.isRegisteredOnCustomEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { player.sendMessage("Couldnt register you due other event participation."); return false; diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java index e7d47b90ba..469f47e26a 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java @@ -154,7 +154,7 @@ public class PrecautionaryRestartManager return true; } - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { return true; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index e7502da3ab..27d364818e 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,7 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (player.isRegisteredOnCustomEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Creature.java index 36f86ef0c9..05ca12289e 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -6522,15 +6522,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnCustomEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Playable.java index 44e1b55d04..a987d2b8e2 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -325,6 +325,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Summon.java index 984abb18b6..55ea907e0c 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1183,8 +1183,8 @@ public abstract class Summon extends Playable } @Override - public boolean isOnCustomEvent() + public boolean isOnEvent() { - return (_owner != null) && _owner.isOnCustomEvent(); + return (_owner != null) && _owner.isOnEvent(); } } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java index 81a64bbf01..7be28d61f7 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java @@ -286,7 +286,7 @@ public class CubicInstance implements IIdentifiable return; } // Custom event targeting - if (_owner.isOnCustomEvent()) + if (_owner.isOnEvent()) { if (ownerTarget.getActingPlayer() != null) { diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 1a9e0b68f7..a7afd6f5bd 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -716,8 +716,8 @@ public class PlayerInstance extends Playable public ReentrantLock soulShotLock = new ReentrantLock(); /** Event parameters */ - private boolean _isRegisteredOnCustomEvent = false; - private boolean _isOnCustomEvent = false; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -5318,7 +5318,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (isOnCustomEvent() || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5686,7 +5686,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!isOnCustomEvent()) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8337,7 +8337,7 @@ public class PlayerInstance extends Playable return false; } - if (isRegisteredOnCustomEvent()) + if (isRegisteredOnEvent()) { sendMessage("A superior power doesn't allow you to leave."); return false; @@ -8420,9 +8420,9 @@ public class PlayerInstance extends Playable } // Check if the attacker is in an event - if (isOnCustomEvent()) + if (isOnEvent()) { - return true; + return getTeam() != attacker.getTeam(); } // Check if the attacker is a Playable @@ -12364,7 +12364,7 @@ public class PlayerInstance extends Playable return; } - if (isResurrectSpecialAffected() || isLucky() || isOnCustomEvent() || isInsideZone(ZoneId.PVP) || isInsideZone(ZoneId.SIEGE) || canOverrideCond(PlayerCondOverride.DEATH_PENALTY)) + if (isResurrectSpecialAffected() || isLucky() || isOnEvent() || isInsideZone(ZoneId.PVP) || isInsideZone(ZoneId.SIEGE) || canOverrideCond(PlayerCondOverride.DEATH_PENALTY)) { return; } @@ -13879,16 +13879,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - public void setPremiumStatus(boolean premiumStatus) { _premiumStatus = premiumStatus; @@ -14004,25 +13994,35 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isRegisteredOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isRegisteredOnCustomEvent || _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setRegisteredOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isRegisteredOnCustomEvent = value; + _isRegisteredOnEvent = value; } @Override - public boolean isOnCustomEvent() + public boolean isOnEvent() { - return _isOnCustomEvent; + return _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setOnEvent(boolean value) { - _isOnCustomEvent = value; + _isOnEvent = value; + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCallPc.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCallPc.java index 4466642299..d6b5b8372c 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCallPc.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCallPc.java @@ -54,7 +54,7 @@ public class ConditionPlayerCallPc extends Condition { canCallPlayer = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendPacket(SystemMessageId.YOUR_TARGET_IS_IN_AN_AREA_WHICH_BLOCKS_SUMMONING); canCallPlayer = false; diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index ce63ac33ea..5e7aa12f02 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -45,7 +45,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 862b2a3ee2..b0f5be3c56 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -878,7 +878,7 @@ public class Instance */ public void notifyDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_ejectTime > 0)) + if (!player.isOnEvent() && (_ejectTime > 0)) { // Proper system message doesn't exist in epilogue client. player.sendMessage("If you are not resurrected within " + (_ejectTime / 1000 / 60) + " minutes, you will be expelled from the instance zone."); diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/olympiad/Olympiad.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/olympiad/Olympiad.java index d0568a55d5..7307d6299f 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/olympiad/Olympiad.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/olympiad/Olympiad.java @@ -581,7 +581,7 @@ public class Olympiad extends ListenersContainer noble.sendPacket(sm); return false; } - if (noble.isRegisteredOnCustomEvent()) + if (noble.isRegisteredOnEvent()) { noble.sendMessage("You can't join olympiad while participating on events."); return false; @@ -1171,7 +1171,7 @@ public class Olympiad extends ListenersContainer spectator.sendPacket(new SystemMessage(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_GRAND_OLYMPIAD_GAMES_MATCH_WHILE_YOU_ARE_ON_THE_WAITING_LIST)); return; } - if (spectator.isRegisteredOnCustomEvent()) + if (spectator.isRegisteredOnEvent()) { spectator.sendMessage("You can not observe games while registered on events."); return; diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/skills/Skill.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/skills/Skill.java index 28a9f1aa14..906c090350 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/skills/Skill.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/skills/Skill.java @@ -1122,7 +1122,7 @@ public class Skill implements IIdentifiable } } - if (player.isOnCustomEvent() && targetPlayer.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && targetPlayer.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 2b076382bb..2a83d9e315 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -24,13 +24,14 @@ import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.ClanHallManager; import org.l2jmobius.gameserver.instancemanager.FortManager; import org.l2jmobius.gameserver.instancemanager.MapRegionManager; -import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.TerritoryWarManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SiegeClan; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.SiegeFlagInstance; -import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.events.EventType; +import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; +import org.l2jmobius.gameserver.model.quest.Event; import org.l2jmobius.gameserver.model.residences.ClanHall; import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; @@ -93,15 +94,15 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { - // This is an example, replace EventScriptName with proper event script name. - final Quest eventScript = QuestManager.getInstance().getQuest("EventScriptName"); - if (eventScript != null) + for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_KILL)) { - // Notify onAdvEvent ResurrectPlayer event. - eventScript.notifyEvent("ResurrectPlayer", null, player); - return; + if (listener.getOwner() instanceof Event) + { + ((Event) listener.getOwner()).notifyEvent("ResurrectPlayer", null, player); + return; + } } } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/serverpackets/Die.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/serverpackets/Die.java index 9becc499ef..74874ad9a9 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/serverpackets/Die.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/serverpackets/Die.java @@ -68,7 +68,7 @@ public class Die implements IClientOutgoingPacket if (_creature.isPlayer()) { - if (!Olympiad.getInstance().isRegistered(_creature.getActingPlayer()) && !_creature.getActingPlayer().isOnCustomEvent()) + if (!Olympiad.getInstance().isRegistered(_creature.getActingPlayer()) && !_creature.getActingPlayer().isOnEvent()) { _staticRes = _creature.getInventory().haveItemForSelfResurrection(); } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 31b3eab0e0..91909d6272 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnCustomEvent() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/areas/Hellbound/AI/NPC/Warpgate/Warpgate.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/areas/Hellbound/AI/NPC/Warpgate/Warpgate.java index acb63b1d0d..1a60c7100f 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/areas/Hellbound/AI/NPC/Warpgate/Warpgate.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/ai/areas/Hellbound/AI/NPC/Warpgate/Warpgate.java @@ -95,7 +95,7 @@ public class Warpgate extends AbstractNpcAI if (creature.isPlayer()) { final PlayerInstance player = creature.getActingPlayer(); - if (!canEnter(player) && !player.canOverrideCond(PlayerCondOverride.ZONE_CONDITIONS) && !player.isOnCustomEvent()) + if (!canEnter(player) && !player.canOverrideCond(PlayerCondOverride.ZONE_CONDITIONS) && !player.isOnEvent()) { startQuestTimer("TELEPORT", 1000, null, player); } diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/bypasshandlers/Observation.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/bypasshandlers/Observation.java index f5c46a8ab1..a8d1734627 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/bypasshandlers/Observation.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/bypasshandlers/Observation.java @@ -100,7 +100,7 @@ public class Observation implements IBypassHandler player.sendPacket(SystemMessageId.YOU_MAY_NOT_OBSERVE_A_SIEGE_WITH_A_PET_OR_SERVITOR_SUMMONED); return false; } - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("Cannot use while registered on an event"); return false; diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/bypasshandlers/OlympiadObservation.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/bypasshandlers/OlympiadObservation.java index 7bad5bafda..00f484b3f7 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/bypasshandlers/OlympiadObservation.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/bypasshandlers/OlympiadObservation.java @@ -81,7 +81,7 @@ public class OlympiadObservation implements IBypassHandler return false; } - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendMessage("You can not observe games while registered on an event."); return false; diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/communityboard/HomeBoard.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/communityboard/HomeBoard.java index 8193ae80c9..47cd371a08 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/communityboard/HomeBoard.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/communityboard/HomeBoard.java @@ -89,7 +89,7 @@ public class HomeBoard implements IParseBoardHandler break; } } - return commandCheck && (player.isCastingNow() || player.isCastingSimultaneouslyNow() || player.isInCombat() || player.isInDuel() || player.isInOlympiadMode() || player.isInsideZone(ZoneId.SIEGE) || player.isInsideZone(ZoneId.PVP) || (player.getPvpFlag() > 0) || player.isAlikeDead() || player.isOnCustomEvent()); + return commandCheck && (player.isCastingNow() || player.isCastingSimultaneouslyNow() || player.isInCombat() || player.isInDuel() || player.isInOlympiadMode() || player.isInsideZone(ZoneId.SIEGE) || player.isInsideZone(ZoneId.PVP) || (player.getPvpFlag() > 0) || player.isAlikeDead() || player.isOnEvent()); }; private static final Predicate KARMA_CHECK = player -> Config.COMMUNITYBOARD_KARMA_DISABLED && (player.getKarma() > 0); diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/CallPc.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/CallPc.java index 84a62c1ba6..4228c9ef6c 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/CallPc.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/CallPc.java @@ -139,7 +139,7 @@ public class CallPc extends AbstractEffect return false; } - if (target.isFestivalParticipant() || target.isFlyingMounted() || target.isCombatFlagEquipped() || !target.isOnCustomEvent()) + if (target.isFestivalParticipant() || target.isFlyingMounted() || target.isCombatFlagEquipped() || !target.isOnEvent()) { activeChar.sendPacket(SystemMessageId.YOUR_TARGET_IS_IN_AN_AREA_WHICH_BLOCKS_SUMMONING); return false; diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java index a45ca0874f..658ae944d8 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java @@ -40,7 +40,7 @@ public class ItemSkillsTemplate implements IItemHandler return false; } - if (playable.isOnCustomEvent()) + if (playable.isOnEvent()) { playable.sendPacket(ActionFailed.STATIC_PACKET); return false; diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java index a0413c7413..d81159c992 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java @@ -38,7 +38,7 @@ public class SummonItems extends ItemSkillsTemplate return false; } - if (playable.isOnCustomEvent()) + if (playable.isOnEvent()) { return false; } diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/Clan.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/Clan.java index 852ae47cc9..0773916ae7 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/Clan.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/Clan.java @@ -100,7 +100,7 @@ public class Clan implements ITargetTypeHandler continue; } - if (player.isOnCustomEvent() && obj.isOnCustomEvent() && (player.getTeam() != obj.getTeam())) + if (player.isOnEvent() && obj.isOnEvent() && (player.getTeam() != obj.getTeam())) { continue; } diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/CorpseClan.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/CorpseClan.java index 908185dc58..13801ef947 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/CorpseClan.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/CorpseClan.java @@ -87,7 +87,7 @@ public class CorpseClan implements ITargetTypeHandler continue; } - if (player.isOnCustomEvent() && obj.isOnCustomEvent() && (player.getTeam() != obj.getTeam())) + if (player.isOnEvent() && obj.isOnEvent() && (player.getTeam() != obj.getTeam())) { continue; } diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/PartyClan.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/PartyClan.java index 9411bebca4..784bfad04f 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/PartyClan.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/PartyClan.java @@ -117,7 +117,7 @@ public class PartyClan implements ITargetTypeHandler continue; } - if (player.isOnCustomEvent() && obj.isOnCustomEvent() && (player.getTeam() != obj.getTeam())) + if (player.isOnEvent() && obj.isOnEvent() && (player.getTeam() != obj.getTeam())) { continue; } diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/usercommandhandlers/Unstuck.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/usercommandhandlers/Unstuck.java index 83a5465066..8154e9959d 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/usercommandhandlers/Unstuck.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/usercommandhandlers/Unstuck.java @@ -44,7 +44,7 @@ public class Unstuck implements IUserCommandHandler @Override public boolean useUserCommand(int id, PlayerInstance player) { - if (player.isRegisteredOnCustomEvent()) + if (player.isRegisteredOnEvent()) { player.sendPacket(ActionFailed.STATIC_PACKET); return false; diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java index a3d2f21f11..e4bbe4db4a 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/voicedcommandhandlers/Wedding.java @@ -289,7 +289,7 @@ public class Wedding implements IVoicedCommandHandler return false; } - if (activeChar.isRegisteredOnCustomEvent()) + if (activeChar.isRegisteredOnEvent()) { activeChar.sendMessage("You are registered in an event."); return false; @@ -368,7 +368,7 @@ public class Wedding implements IVoicedCommandHandler return false; } - if (partner.isRegisteredOnCustomEvent()) + if (partner.isRegisteredOnEvent()) { activeChar.sendMessage("Your partner is registered in an event."); return false; diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 2137e2b053..97291eaef4 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -170,7 +170,7 @@ public class HandysBlockCheckerManager return false; } - if (player.isRegisteredOnCustomEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { player.sendMessage("Couldnt register you due other event participation."); return false; diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java index e7d47b90ba..469f47e26a 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/PrecautionaryRestartManager.java @@ -154,7 +154,7 @@ public class PrecautionaryRestartManager return true; } - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { return true; } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index add2a1a7e7..25ae4196d3 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,7 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (player.isRegisteredOnCustomEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Creature.java index 80ecb97dc7..2ab86ce990 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -6524,15 +6524,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnCustomEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Playable.java index 44e1b55d04..a987d2b8e2 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -325,6 +325,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Summon.java index 91a4bf8c30..459501f0cc 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1183,8 +1183,8 @@ public abstract class Summon extends Playable } @Override - public boolean isOnCustomEvent() + public boolean isOnEvent() { - return (_owner != null) && _owner.isOnCustomEvent(); + return (_owner != null) && _owner.isOnEvent(); } } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java index 81a64bbf01..7be28d61f7 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java @@ -286,7 +286,7 @@ public class CubicInstance implements IIdentifiable return; } // Custom event targeting - if (_owner.isOnCustomEvent()) + if (_owner.isOnEvent()) { if (ownerTarget.getActingPlayer() != null) { diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 0af2702837..3f861625a1 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -735,8 +735,8 @@ public class PlayerInstance extends Playable protected Set _activeSoulShots = ConcurrentHashMap.newKeySet(1); /** Event parameters */ - private boolean _isRegisteredOnCustomEvent = false; - private boolean _isOnCustomEvent = false; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -5208,7 +5208,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (isOnCustomEvent() || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5576,7 +5576,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!isOnCustomEvent()) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8221,7 +8221,7 @@ public class PlayerInstance extends Playable return false; } - if (isRegisteredOnCustomEvent()) + if (isRegisteredOnEvent()) { sendMessage("A superior power doesn't allow you to leave."); return false; @@ -8304,9 +8304,9 @@ public class PlayerInstance extends Playable } // Check if the attacker is in an event - if (isOnCustomEvent()) + if (isOnEvent()) { - return true; + return getTeam() != attacker.getTeam(); } // Check if the attacker is a Playable @@ -12257,7 +12257,7 @@ public class PlayerInstance extends Playable return; } - if (isResurrectSpecialAffected() || isLucky() || isOnCustomEvent() || isInsideZone(ZoneId.PVP) || isInsideZone(ZoneId.SIEGE) || canOverrideCond(PlayerCondOverride.DEATH_PENALTY)) + if (isResurrectSpecialAffected() || isLucky() || isOnEvent() || isInsideZone(ZoneId.PVP) || isInsideZone(ZoneId.SIEGE) || canOverrideCond(PlayerCondOverride.DEATH_PENALTY)) { return; } @@ -13773,16 +13773,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. * @return @@ -14091,25 +14081,35 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isRegisteredOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isRegisteredOnCustomEvent || _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setRegisteredOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isRegisteredOnCustomEvent = value; + _isRegisteredOnEvent = value; } @Override - public boolean isOnCustomEvent() + public boolean isOnEvent() { - return _isOnCustomEvent; + return _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setOnEvent(boolean value) { - _isOnCustomEvent = value; + _isOnEvent = value; + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCallPc.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCallPc.java index 4466642299..d6b5b8372c 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCallPc.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCallPc.java @@ -54,7 +54,7 @@ public class ConditionPlayerCallPc extends Condition { canCallPlayer = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendPacket(SystemMessageId.YOUR_TARGET_IS_IN_AN_AREA_WHICH_BLOCKS_SUMMONING); canCallPlayer = false; diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index ce63ac33ea..5e7aa12f02 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -45,7 +45,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 17d1609c23..2e9c6d68ae 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -878,7 +878,7 @@ public class Instance */ public void notifyDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_ejectTime > 0)) + if (!player.isOnEvent() && (_ejectTime > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTES_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANT_ZONE); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index c9da67e4bb..0c8074a803 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -121,7 +121,7 @@ public abstract class AbstractOlympiadGame } // safety precautions - if (player.inObserverMode() || player.isRegisteredOnCustomEvent()) + if (player.inObserverMode() || player.isRegisteredOnEvent()) { return new SystemMessage(SystemMessageId.YOUR_OPPONENT_DOES_NOT_MEET_THE_REQUIREMENTS_TO_DO_BATTLE_THE_MATCH_HAS_BEEN_CANCELLED); } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 47b10b469f..9cacdde56b 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -487,7 +487,7 @@ public class OlympiadManager } final int charId = noble.getObjectId(); - if (noble.isRegisteredOnCustomEvent()) + if (noble.isRegisteredOnEvent()) { player.sendMessage("You can't join olympiad while participating on an event."); return false; diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/skills/Skill.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/skills/Skill.java index 0bead7643e..6d913e3b00 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/skills/Skill.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/skills/Skill.java @@ -1129,7 +1129,7 @@ public class Skill implements IIdentifiable } } - if (player.isOnCustomEvent() && targetPlayer.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && targetPlayer.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 2b076382bb..2a83d9e315 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -24,13 +24,14 @@ import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.ClanHallManager; import org.l2jmobius.gameserver.instancemanager.FortManager; import org.l2jmobius.gameserver.instancemanager.MapRegionManager; -import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.TerritoryWarManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.SiegeClan; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.SiegeFlagInstance; -import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.events.EventType; +import org.l2jmobius.gameserver.model.events.listeners.AbstractEventListener; +import org.l2jmobius.gameserver.model.quest.Event; import org.l2jmobius.gameserver.model.residences.ClanHall; import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; @@ -93,15 +94,15 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { - // This is an example, replace EventScriptName with proper event script name. - final Quest eventScript = QuestManager.getInstance().getQuest("EventScriptName"); - if (eventScript != null) + for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_KILL)) { - // Notify onAdvEvent ResurrectPlayer event. - eventScript.notifyEvent("ResurrectPlayer", null, player); - return; + if (listener.getOwner() instanceof Event) + { + ((Event) listener.getOwner()).notifyEvent("ResurrectPlayer", null, player); + return; + } } } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/serverpackets/Die.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/serverpackets/Die.java index b30dbcc085..4c446111ee 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/serverpackets/Die.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/serverpackets/Die.java @@ -68,7 +68,7 @@ public class Die implements IClientOutgoingPacket if (_creature.isPlayer()) { - if (!OlympiadManager.getInstance().isRegistered(_creature.getActingPlayer()) && !_creature.getActingPlayer().isOnCustomEvent()) + if (!OlympiadManager.getInstance().isRegistered(_creature.getActingPlayer()) && !_creature.getActingPlayer().isOnEvent()) { _staticRes = _creature.getInventory().haveItemForSelfResurrection(); } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index 64f56752df..730c69beb6 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnCustomEvent() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/.classpath b/L2J_Mobius_Classic_2.0_Saviors/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/.classpath +++ b/L2J_Mobius_Classic_2.0_Saviors/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/AdminCommands.xml b/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index ffdf9cca5f..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/Elpies.txt b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/Rabbits.txt b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/Race.txt b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 183b207c78..04f73edadc 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -156,7 +156,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -191,7 +191,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -249,7 +249,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -299,7 +299,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 992cd26fed..efb6423d4d 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -151,7 +151,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -176,13 +176,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -229,7 +229,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -266,6 +266,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -456,7 +457,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -483,7 +484,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -536,7 +537,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -583,7 +584,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -610,7 +611,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -641,7 +642,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -728,7 +729,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -780,7 +781,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -885,7 +886,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java index 33c1ad74b4..70bd0e70c2 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java @@ -21,7 +21,6 @@ import java.util.logging.Logger; import org.l2jmobius.gameserver.handler.DailyMissionHandler; import handlers.dailymissionhandlers.BossDailyMissionHandler; -import handlers.dailymissionhandlers.CeremonyOfChaosDailyMissionHandler; import handlers.dailymissionhandlers.FishingDailyMissionHandler; import handlers.dailymissionhandlers.LevelDailyMissionHandler; import handlers.dailymissionhandlers.LoginMonthDailyMissionHandler; @@ -45,7 +44,6 @@ public class DailyMissionMasterHandler DailyMissionHandler.getInstance().registerHandler("quest", QuestDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("olympiad", OlympiadDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("siege", SiegeDailyMissionHandler::new); - DailyMissionHandler.getInstance().registerHandler("ceremonyofchaos", CeremonyOfChaosDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("boss", BossDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("fishing", FishingDailyMissionHandler::new); LOGGER.info(DailyMissionMasterHandler.class.getSimpleName() + ": Loaded " + DailyMissionHandler.getInstance().size() + " handlers."); diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/MasterHandler.java index 660f187dc9..4adf498c85 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -143,7 +142,6 @@ import handlers.bypasshandlers.Buy; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -412,7 +410,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -481,7 +478,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java deleted file mode 100644 index d03e8e82f6..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.dailymissionhandlers; - -import org.l2jmobius.gameserver.enums.DailyMissionStatus; -import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler; -import org.l2jmobius.gameserver.model.DailyMissionDataHolder; -import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.Containers; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosDailyMissionHandler extends AbstractDailyMissionHandler -{ - private final int _amount; - - public CeremonyOfChaosDailyMissionHandler(DailyMissionDataHolder holder) - { - super(holder); - _amount = holder.getRequiredCompletions(); - } - - @Override - public void init() - { - Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT, (OnCeremonyOfChaosMatchResult event) -> onCeremonyOfChaosMatchResult(event), this)); - } - - @Override - public boolean isAvailable(PlayerInstance player) - { - final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); - if (entry != null) - { - switch (entry.getStatus()) - { - case NOT_AVAILABLE: // Initial state - { - if (entry.getProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - storePlayerEntry(entry); - } - break; - } - case AVAILABLE: - { - return true; - } - } - } - return false; - } - - private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) - { - event.getMembers().forEach(member -> - { - final DailyMissionPlayerEntry entry = getPlayerEntry(member.getObjectId(), true); - if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE) - { - if (entry.increaseProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - } - storePlayerEntry(entry); - } - }); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/01000-01099.xml index 26789b7cda..09da0dd1b3 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/01000-01099.xml @@ -623,7 +623,7 @@ - + @@ -646,7 +646,7 @@ - + @@ -740,7 +740,7 @@ - + diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/01500-01599.xml index 94a4a4347e..e28c0ddf76 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/05200-05299.xml index 4e06a8b1e1..47b06d7c4f 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/05200-05299.xml @@ -313,7 +313,7 @@ - + @@ -334,7 +334,7 @@ - + @@ -355,7 +355,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -397,7 +397,7 @@ - + @@ -418,7 +418,7 @@ - + @@ -439,7 +439,7 @@ - + @@ -460,7 +460,7 @@ - + @@ -481,7 +481,7 @@ - + @@ -502,7 +502,7 @@ - + @@ -523,7 +523,7 @@ - + @@ -544,7 +544,7 @@ - + @@ -565,7 +565,7 @@ - + @@ -586,7 +586,7 @@ - + @@ -607,7 +607,7 @@ - + diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/05500-05599.xml index 3291b7d08b..f6e7e604e0 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/05500-05599.xml @@ -736,7 +736,7 @@ - + @@ -755,7 +755,7 @@ - + diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/06400-06499.xml index e3e9ef44ba..15660e58ee 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/29600-29699.xml b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/29600-29699.xml index 1b6c27afa3..0af618e268 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/29600-29699.xml +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/29600-29699.xml @@ -1168,7 +1168,7 @@ - + @@ -1192,7 +1192,7 @@ - + diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/49400-49499.xml b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/49400-49499.xml index ac232414f4..9d2f122847 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/49400-49499.xml +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/stats/items/49400-49499.xml @@ -1406,7 +1406,7 @@ - + diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/items.xsd index 4663f1d0bc..9afe2f7b99 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_Classic_2.0_Saviors/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_Classic_2.0_Saviors/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_Classic_2.0_Saviors/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_Classic_2.0_Saviors/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/GameServer.java index 15d51f0545..0f4bb23ffa 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/GameServer.java @@ -67,7 +67,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemHPBonusData; import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -387,8 +386,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/Shutdown.java index 585b663269..f222a68ba7 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/Shutdown.java @@ -29,7 +29,6 @@ import org.l2jmobius.gameserver.data.SchemeBufferTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -453,8 +452,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java deleted file mode 100644 index fff7561e47..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosResult -{ - TIE, - WIN, - LOSE -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index e91606feb1..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANT_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); - resetDailyMissionRewards(); resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); + resetDailyMissionRewards(); + resetAttendanceRewards(); resetVip(); - onResetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -86,8 +106,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -105,8 +124,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -153,12 +213,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -281,7 +340,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 4f663f1e96..4835e884e6 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java index 4eada88274..20a9bc5ad5 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5036,15 +5036,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Summon.java index 4b09eca1d7..4bc65f3e09 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index b41d010f4d..01427e7857 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -128,7 +128,6 @@ import org.l2jmobius.gameserver.instancemanager.RecipeManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -183,7 +182,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -191,7 +189,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -219,7 +216,6 @@ import org.l2jmobius.gameserver.model.fishing.Fishing; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -695,10 +691,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -725,7 +717,8 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -2889,11 +2882,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4845,10 +4834,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5009,7 +4994,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5336,7 +5321,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8049,7 +8034,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8110,22 +8095,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return getTeam() != attacker.getTeam(); } // Check if the attacker is a Playable @@ -9293,12 +9269,12 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) + if (_inOlympiadMode) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; return false; } - if (isOnEvent()) // custom event message + if (isOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11093,12 +11069,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -12867,16 +12837,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -12975,21 +12935,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13049,13 +12994,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13069,66 +13007,40 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13690,63 +13602,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index a30002000f..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,668 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 3ed2685a6f..94eee3bae6 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERING_FOR_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/events/EventType.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/events/EventType.java index 9c29411ba7..3c8909d635 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/events/EventType.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/events/EventType.java @@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.model.events; import org.l2jmobius.commons.util.CommonUtil; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttack; @@ -204,9 +203,6 @@ public enum EventType // Olympiad events ON_OLYMPIAD_MATCH_RESULT(OnOlympiadMatchResult.class, void.class), - // Ceremony of Chaos events - ON_CEREMONY_OF_CHAOS_MATCH_RESULT(OnCeremonyOfChaosMatchResult.class, void.class), - // Playable events ON_PLAYABLE_EXP_CHANGED(OnPlayableExpChanged.class, void.class, TerminateReturn.class), diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java deleted file mode 100644 index fb0f2bb3da..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; - -import java.util.List; - -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; - -/** - * @author UnAfraid - */ -public class OnCeremonyOfChaosMatchResult implements IBaseEvent -{ - private final List _winners; - private final List _members; - - public OnCeremonyOfChaosMatchResult(List winners, List members) - { - _winners = winners; - _members = members; - } - - public List getWinners() - { - return _winners; - } - - public List getMembers() - { - return _members; - } - - @Override - public EventType getType() - { - return EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index b323a33915..29cce0c911 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANT_ZONE); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/Item.java index e6b83064de..09b6f3d281 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -146,7 +145,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -219,7 +218,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -854,9 +853,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -931,11 +930,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 3ff447bc23..ba7652e83c 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index b65afbc37b..7dd3e39882 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java index 3d0edcc1e0..f9101d3b6a 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java @@ -37,9 +37,6 @@ import org.l2jmobius.gameserver.network.clientpackets.attendance.RequestVipAtten import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestChangeAttributeCancel; import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestChangeAttributeItem; import org.l2jmobius.gameserver.network.clientpackets.attributechange.SendChangeAttributeTargetItem; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCancelCuriousHouse; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCuriousHouseHtml; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestJoinCuriousHouse; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyInfo; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyItem; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionCancel; @@ -277,13 +274,13 @@ public enum ExIncomingPackets implements IIncomingPackets REQUEST_MENTEE_WAITING_LIST(0xB8, RequestMenteeWaitingList::new, ConnectionState.IN_GAME), REQUEST_CLAN_ASK_JOIN_BY_NAME(0xB9, RequestClanAskJoinByName::new, ConnectionState.IN_GAME), REQUEST_IN_ZONE_WAITING_TIME(0xBA, RequestInzoneWaitingTime::new, ConnectionState.IN_GAME), - REQUEST_JOIN_CURIOUS_HOUSE(0xBB, RequestJoinCuriousHouse::new, ConnectionState.IN_GAME), - REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, RequestCancelCuriousHouse::new, ConnectionState.IN_GAME), + REQUEST_JOIN_CURIOUS_HOUSE(0xBB, null, ConnectionState.IN_GAME), + REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, null, ConnectionState.IN_GAME), REQUEST_LEAVE_CURIOUS_HOUSE(0xBD, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_LIST_CURIOUS_HOUSE(0xBE, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_CURIOUS_HOUSE(0xBF, null, ConnectionState.IN_GAME), REQUEST_LEAVE_OBSERVING_CURIOUS_HOUSE(0xC0, null, ConnectionState.IN_GAME), - REQUEST_CURIOUS_HOUSE_HTML(0xC1, RequestCuriousHouseHtml::new, ConnectionState.IN_GAME), + REQUEST_CURIOUS_HOUSE_HTML(0xC1, null, ConnectionState.IN_GAME), REQUEST_CURIOUS_HOUSE_RECORD(0xC2, null, ConnectionState.IN_GAME), EX_SYSSTRING(0xC3, null, ConnectionState.IN_GAME), REQUEST_EX_TRY_TO_PUT_SHAPE_SHIFTING_TARGET_ITEM(0xC4, RequestExTryToPutShapeShiftingTargetItem::new, ConnectionState.IN_GAME), diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 35e0834ec2..a1455d9bda 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -44,7 +44,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -425,11 +424,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index b0676e562d..c2cb56b495 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java deleted file mode 100644 index ce871f6a18..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestCancelCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java deleted file mode 100644 index a4e6f04627..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Sdw - */ -public class RequestCuriousHouseHtml implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java deleted file mode 100644 index 33ca3d7b33..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestJoinCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.EXCEPT_THE_VITALITY_BUFF_ALL_BUFFS_INCLUDING_ART_OF_SEDUCTION_WILL_BE_DELETED); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index cf8e88d64f..0e502b5728 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed packet.writeD(_z); // Confirmed @@ -264,7 +260,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java deleted file mode 100644 index 372432ef02..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseEnter implements IClientOutgoingPacket -{ - public static final ExCuriousHouseEnter STATIC_PACKET = new ExCuriousHouseEnter(); - - private ExCuriousHouseEnter() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_ENTER.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java deleted file mode 100644 index 50e1e74725..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseLeave implements IClientOutgoingPacket -{ - public static final ExCuriousHouseLeave STATIC_PACKET = new ExCuriousHouseLeave(); - - private ExCuriousHouseLeave() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_LEAVE.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java deleted file mode 100644 index d26eee8d89..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import java.util.Collection; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseMemberList implements IClientOutgoingPacket -{ - private final int _id; - private final int _maxPlayers; - private final Collection _players; - - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) - { - _id = id; - _maxPlayers = maxPlayers; - _players = players; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_MEMBER_LIST.writeId(packet); - - packet.writeD(_id); - packet.writeD(_maxPlayers); - packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) - { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } - } - return true; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java deleted file mode 100644 index 14dca9be4a..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseObserveMode implements IClientOutgoingPacket -{ - public static final ExCuriousHouseObserveMode STATIC_ENABLED = new ExCuriousHouseObserveMode(0); - public static final ExCuriousHouseObserveMode STATIC_DISABLED = new ExCuriousHouseObserveMode(1); - - private final int _spectating; - - private ExCuriousHouseObserveMode(int spectating) - { - _spectating = spectating; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_OBSERVE_MODE.writeId(packet); - packet.writeC(_spectating); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java deleted file mode 100644 index b71caa5f14..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseRemainTime implements IClientOutgoingPacket -{ - private final int _time; - - public ExCuriousHouseRemainTime(int time) - { - _time = time; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_REMAIN_TIME.writeId(packet); - packet.writeD(_time); - - return true; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java deleted file mode 100644 index 1f09c4de0d..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseResult implements IClientOutgoingPacket -{ - private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; - - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) - { - _result = result; - _event = event; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); - packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> - { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java deleted file mode 100644 index abf627ab72..0000000000 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseState implements IClientOutgoingPacket -{ - public static final ExCuriousHouseState IDLE_PACKET = new ExCuriousHouseState(0); - public static final ExCuriousHouseState REGISTRATION_PACKET = new ExCuriousHouseState(1); - public static final ExCuriousHouseState PREPARE_PACKET = new ExCuriousHouseState(2); - public static final ExCuriousHouseState STARTING_PACKET = new ExCuriousHouseState(3); - - private final int _state; - - public ExCuriousHouseState(int state) - { - _state = state; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_STATE.writeId(packet); - packet.writeD(_state); - return true; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_Classic_2.1_Zaken/.classpath b/L2J_Mobius_Classic_2.1_Zaken/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/.classpath +++ b/L2J_Mobius_Classic_2.1_Zaken/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/AdminCommands.xml b/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index ffdf9cca5f..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/Elpies.txt b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/Rabbits.txt b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/Race.txt b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 0eab305e47..7e2e26e629 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -156,7 +156,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -191,7 +191,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -249,7 +249,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -299,7 +299,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 992cd26fed..efb6423d4d 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -151,7 +151,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -176,13 +176,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -229,7 +229,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -266,6 +266,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -456,7 +457,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -483,7 +484,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -536,7 +537,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -583,7 +584,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -610,7 +611,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -641,7 +642,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -728,7 +729,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -780,7 +781,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -885,7 +886,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java index 33c1ad74b4..70bd0e70c2 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java @@ -21,7 +21,6 @@ import java.util.logging.Logger; import org.l2jmobius.gameserver.handler.DailyMissionHandler; import handlers.dailymissionhandlers.BossDailyMissionHandler; -import handlers.dailymissionhandlers.CeremonyOfChaosDailyMissionHandler; import handlers.dailymissionhandlers.FishingDailyMissionHandler; import handlers.dailymissionhandlers.LevelDailyMissionHandler; import handlers.dailymissionhandlers.LoginMonthDailyMissionHandler; @@ -45,7 +44,6 @@ public class DailyMissionMasterHandler DailyMissionHandler.getInstance().registerHandler("quest", QuestDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("olympiad", OlympiadDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("siege", SiegeDailyMissionHandler::new); - DailyMissionHandler.getInstance().registerHandler("ceremonyofchaos", CeremonyOfChaosDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("boss", BossDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("fishing", FishingDailyMissionHandler::new); LOGGER.info(DailyMissionMasterHandler.class.getSimpleName() + ": Loaded " + DailyMissionHandler.getInstance().size() + " handlers."); diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/MasterHandler.java index 660f187dc9..4adf498c85 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -143,7 +142,6 @@ import handlers.bypasshandlers.Buy; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -412,7 +410,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -481,7 +478,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java deleted file mode 100644 index d03e8e82f6..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.dailymissionhandlers; - -import org.l2jmobius.gameserver.enums.DailyMissionStatus; -import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler; -import org.l2jmobius.gameserver.model.DailyMissionDataHolder; -import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.Containers; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosDailyMissionHandler extends AbstractDailyMissionHandler -{ - private final int _amount; - - public CeremonyOfChaosDailyMissionHandler(DailyMissionDataHolder holder) - { - super(holder); - _amount = holder.getRequiredCompletions(); - } - - @Override - public void init() - { - Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT, (OnCeremonyOfChaosMatchResult event) -> onCeremonyOfChaosMatchResult(event), this)); - } - - @Override - public boolean isAvailable(PlayerInstance player) - { - final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); - if (entry != null) - { - switch (entry.getStatus()) - { - case NOT_AVAILABLE: // Initial state - { - if (entry.getProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - storePlayerEntry(entry); - } - break; - } - case AVAILABLE: - { - return true; - } - } - } - return false; - } - - private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) - { - event.getMembers().forEach(member -> - { - final DailyMissionPlayerEntry entry = getPlayerEntry(member.getObjectId(), true); - if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE) - { - if (entry.increaseProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - } - storePlayerEntry(entry); - } - }); - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/01000-01099.xml index 26789b7cda..09da0dd1b3 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/01000-01099.xml @@ -623,7 +623,7 @@ - + @@ -646,7 +646,7 @@ - + @@ -740,7 +740,7 @@ - + diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/01500-01599.xml index f2e1dc9c7e..4251ee289d 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/05200-05299.xml index 54a63b6979..06c4b29416 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/05200-05299.xml @@ -313,7 +313,7 @@ - + @@ -334,7 +334,7 @@ - + @@ -355,7 +355,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -397,7 +397,7 @@ - + @@ -418,7 +418,7 @@ - + @@ -439,7 +439,7 @@ - + @@ -460,7 +460,7 @@ - + @@ -481,7 +481,7 @@ - + @@ -502,7 +502,7 @@ - + @@ -523,7 +523,7 @@ - + @@ -544,7 +544,7 @@ - + @@ -565,7 +565,7 @@ - + @@ -586,7 +586,7 @@ - + @@ -607,7 +607,7 @@ - + diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/05500-05599.xml index 4bd7f33923..ef56e8fedc 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/05500-05599.xml @@ -736,7 +736,7 @@ - + @@ -755,7 +755,7 @@ - + diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/06400-06499.xml index e3e9ef44ba..15660e58ee 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/29600-29699.xml b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/29600-29699.xml index 287e1ee17b..4740865941 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/29600-29699.xml +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/29600-29699.xml @@ -1111,7 +1111,7 @@ - + @@ -1136,7 +1136,7 @@ - + diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/49400-49499.xml b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/49400-49499.xml index dba65bde55..aff3cc371e 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/49400-49499.xml +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/stats/items/49400-49499.xml @@ -1366,7 +1366,7 @@ - + diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/items.xsd index 4663f1d0bc..9afe2f7b99 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_Classic_2.1_Zaken/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_Classic_2.1_Zaken/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_Classic_2.1_Zaken/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_Classic_2.1_Zaken/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/commons/time/AddPattern.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/commons/time/AddPattern.java new file mode 100644 index 0000000000..893a279fd4 --- /dev/null +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/commons/time/AddPattern.java @@ -0,0 +1,119 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class AddPattern implements NextTime +{ + private int _monthInc = -1; + private int _monthSet = -1; + private int _dayOfMonthInc = -1; + private int _dayOfMonthSet = -1; + private int _hourOfDayInc = -1; + private int _hourOfDaySet = -1; + private int _minuteInc = -1; + private int _minuteSet = -1; + + public AddPattern(String pattern) + { + String[] timeparts; + String[] parts = pattern.split("\\s+"); + if (parts.length == 2) + { + String datemodstr; + String datepartsstr = parts[0]; + String[] dateparts = datepartsstr.split(":"); + if (dateparts.length == 2) + { + if (dateparts[0].startsWith("+")) + { + _monthInc = Integer.parseInt(dateparts[0].substring(1)); + } + else + { + _monthSet = Integer.parseInt(dateparts[0]) - 1; + } + } + if ((datemodstr = dateparts[dateparts.length - 1]).startsWith("+")) + { + _dayOfMonthInc = Integer.parseInt(datemodstr.substring(1)); + } + else + { + _dayOfMonthSet = Integer.parseInt(datemodstr); + } + } + if ((timeparts = parts[parts.length - 1].split(":"))[0].startsWith("+")) + { + _hourOfDayInc = Integer.parseInt(timeparts[0].substring(1)); + } + else + { + _hourOfDaySet = Integer.parseInt(timeparts[0]); + } + if (timeparts[1].startsWith("+")) + { + _minuteInc = Integer.parseInt(timeparts[1].substring(1)); + } + else + { + _minuteSet = Integer.parseInt(timeparts[1]); + } + } + + @Override + public long next(long millis) + { + final GregorianCalendar gc = new GregorianCalendar(TimeZone.getDefault()); + gc.setTimeInMillis(millis); + if (_monthInc >= 0) + { + gc.add(2, _monthInc); + } + if (_monthSet >= 0) + { + gc.set(2, _monthSet); + } + if (_dayOfMonthInc >= 0) + { + gc.add(5, _dayOfMonthInc); + } + if (_dayOfMonthSet >= 0) + { + gc.set(5, _dayOfMonthSet); + } + if (_hourOfDayInc >= 0) + { + gc.add(11, _hourOfDayInc); + } + if (_hourOfDaySet >= 0) + { + gc.set(11, _hourOfDaySet); + } + if (_minuteInc >= 0) + { + gc.add(12, _minuteInc); + } + if (_minuteSet >= 0) + { + gc.set(12, _minuteSet); + } + return gc.getTimeInMillis(); + } +} diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/commons/time/NextTime.java similarity index 84% rename from L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java rename to L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/commons/time/NextTime.java index a1db9c20b8..d08d90164d 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/commons/time/NextTime.java @@ -14,11 +14,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.model.eventengine; +package org.l2jmobius.commons.time; -/** - * @author UnAfraid - */ -public interface IEventState +public interface NextTime { + public long next(long var1); } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/commons/time/SchedulingPattern.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/commons/time/SchedulingPattern.java new file mode 100644 index 0000000000..d9fdd655f3 --- /dev/null +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/commons/time/SchedulingPattern.java @@ -0,0 +1,841 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.ArrayList; +import java.util.GregorianCalendar; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.TimeZone; +import java.util.TreeMap; + +import org.l2jmobius.commons.util.Rnd; + +public class SchedulingPattern implements NextTime +{ + private static final int MINUTE_MIN_VALUE = 0; + private static final int MINUTE_MAX_VALUE = 59; + private static final int HOUR_MIN_VALUE = 0; + private static final int HOUR_MAX_VALUE = 23; + private static final int DAY_OF_MONTH_MIN_VALUE = 1; + private static final int DAY_OF_MONTH_MAX_VALUE = 31; + private static final int MONTH_MIN_VALUE = 1; + private static final int MONTH_MAX_VALUE = 12; + private static final int DAY_OF_WEEK_MIN_VALUE = 0; + private static final int DAY_OF_WEEK_MAX_VALUE = 7; + private static final ValueParser MINUTE_VALUE_PARSER = new MinuteValueParser(); + private static final ValueParser HOUR_VALUE_PARSER = new HourValueParser(); + private static final ValueParser DAY_OF_MONTH_VALUE_PARSER = new DayOfMonthValueParser(); + private static final ValueParser MONTH_VALUE_PARSER = new MonthValueParser(); + private static final ValueParser DAY_OF_WEEK_VALUE_PARSER = new DayOfWeekValueParser(); + private final String _asString; + protected List _minuteMatchers = new ArrayList<>(); + protected List _hourMatchers = new ArrayList<>(); + protected List _dayOfMonthMatchers = new ArrayList<>(); + protected List _monthMatchers = new ArrayList<>(); + protected List _dayOfWeekMatchers = new ArrayList<>(); + protected int _matcherSize = 0; + protected Map _hourAdder = new TreeMap<>(); + protected Map _hourAdderRnd = new TreeMap<>(); + protected Map _dayOfYearAdder = new TreeMap<>(); + protected Map _minuteAdderRnd = new TreeMap<>(); + protected Map _weekOfYearAdder = new TreeMap<>(); + + public static boolean validate(String schedulingPattern) + { + try + { + new SchedulingPattern(schedulingPattern); + } + catch (RuntimeException e) + { + return false; + } + return true; + } + + public SchedulingPattern(String pattern) throws RuntimeException + { + _asString = pattern; + StringTokenizer st1 = new StringTokenizer(pattern, "|"); + if (st1.countTokens() < 1) + { + throw new RuntimeException("invalid pattern: \"" + pattern + "\""); + } + + while (st1.hasMoreTokens()) + { + int i; + String localPattern = st1.nextToken(); + StringTokenizer st2 = new StringTokenizer(localPattern, " \t"); + int tokCnt = st2.countTokens(); + if ((tokCnt < 5) || (tokCnt > 6)) + { + throw new RuntimeException("invalid pattern: \"" + localPattern + "\""); + } + + try + { + String minutePattern = st2.nextToken(); + String[] minutePatternParts = minutePattern.split(":"); + if (minutePatternParts.length > 1) + { + for (i = 0; i < (minutePatternParts.length - 1); ++i) + { + if (minutePatternParts[i].length() <= 1) + { + continue; + } + + if (minutePatternParts[i].startsWith("~")) + { + _minuteAdderRnd.put(_matcherSize, Integer.parseInt(minutePatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + minutePatternParts[i] + "\""); + } + minutePattern = minutePatternParts[minutePatternParts.length - 1]; + } + _minuteMatchers.add(buildValueMatcher(minutePattern, MINUTE_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing minutes field: " + e.getMessage() + "."); + } + + try + { + String hourPattern = st2.nextToken(); + String[] hourPatternParts = hourPattern.split(":"); + if (hourPatternParts.length > 1) + { + for (i = 0; i < (hourPatternParts.length - 1); ++i) + { + if (hourPatternParts[i].length() <= 1) + { + continue; + } + + if (hourPatternParts[i].startsWith("+")) + { + _hourAdder.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + if (hourPatternParts[i].startsWith("~")) + { + _hourAdderRnd.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + hourPatternParts[i] + "\""); + } + hourPattern = hourPatternParts[hourPatternParts.length - 1]; + } + _hourMatchers.add(buildValueMatcher(hourPattern, HOUR_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing hours field: " + e.getMessage() + "."); + } + + try + { + String dayOfMonthPattern = st2.nextToken(); + String[] dayOfMonthPatternParts = dayOfMonthPattern.split(":"); + if (dayOfMonthPatternParts.length > 1) + { + for (i = 0; i < (dayOfMonthPatternParts.length - 1); ++i) + { + if (dayOfMonthPatternParts[i].length() <= 1) + { + continue; + } + + if (dayOfMonthPatternParts[i].startsWith("+")) + { + _dayOfYearAdder.put(_matcherSize, Integer.parseInt(dayOfMonthPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown day modifier \"" + dayOfMonthPatternParts[i] + "\""); + } + dayOfMonthPattern = dayOfMonthPatternParts[dayOfMonthPatternParts.length - 1]; + } + _dayOfMonthMatchers.add(buildValueMatcher(dayOfMonthPattern, DAY_OF_MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of month field: " + e.getMessage() + "."); + } + + try + { + _monthMatchers.add(buildValueMatcher(st2.nextToken(), MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing months field: " + e.getMessage() + "."); + } + + try + { + _dayOfWeekMatchers.add(buildValueMatcher(st2.nextToken(), DAY_OF_WEEK_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + + if (st2.hasMoreTokens()) + { + try + { + String weekOfYearAdderText = st2.nextToken(); + if (weekOfYearAdderText.charAt(0) != '+') + { + throw new RuntimeException("Unknown week of year addition in pattern \"" + localPattern + "\"."); + } + weekOfYearAdderText = weekOfYearAdderText.substring(1); + _weekOfYearAdder.put(_matcherSize, Integer.parseInt(weekOfYearAdderText)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + } + ++_matcherSize; + } + } + + private ValueMatcher buildValueMatcher(String str, ValueParser parser) throws Exception + { + if ((str.length() == 1) && str.equals("*")) + { + return new AlwaysTrueValueMatcher(); + } + + ArrayList values = new ArrayList<>(); + StringTokenizer st = new StringTokenizer(str, ","); + while (st.hasMoreTokens()) + { + List local; + String element = st.nextToken(); + try + { + local = parseListElement(element, parser); + } + catch (Exception e) + { + throw new Exception("invalid field \"" + str + "\", invalid element \"" + element + "\", " + e.getMessage()); + } + + for (Integer value : local) + { + if (values.contains(value)) + { + continue; + } + + values.add(value); + } + } + + if (values.size() == 0) + { + throw new Exception("invalid field \"" + str + "\""); + } + + if (parser == DAY_OF_MONTH_VALUE_PARSER) + { + return new DayOfMonthValueMatcher(values); + } + + return new IntArrayValueMatcher(values); + } + + private List parseListElement(String str, ValueParser parser) throws Exception + { + List values; + StringTokenizer st = new StringTokenizer(str, "/"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + try + { + values = parseRange(st.nextToken(), parser); + } + catch (Exception e) + { + throw new Exception("invalid range, " + e.getMessage()); + } + + if (size == 2) + { + int div; + String dStr = st.nextToken(); + + try + { + div = Integer.parseInt(dStr); + } + catch (NumberFormatException e) + { + throw new Exception("invalid divisor \"" + dStr + "\""); + } + + if (div < 1) + { + throw new Exception("non positive divisor \"" + div + "\""); + } + + ArrayList values2 = new ArrayList<>(); + for (int i = 0; i < values.size(); i += div) + { + values2.add(values.get(i)); + } + + return values2; + } + return values; + } + + private List parseRange(String str, ValueParser parser) throws Exception + { + int v2; + int v1; + if (str.equals("*")) + { + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + ArrayList values = new ArrayList<>(); + for (int i = min; i <= max; ++i) + { + values.add(i); + } + return values; + } + + StringTokenizer st = new StringTokenizer(str, "-"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + String v1Str = st.nextToken(); + try + { + v1 = parser.parse(v1Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v1Str + "\", " + e.getMessage()); + } + + if (size == 1) + { + ArrayList values = new ArrayList<>(); + values.add(v1); + return values; + } + + String v2Str = st.nextToken(); + try + { + v2 = parser.parse(v2Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v2Str + "\", " + e.getMessage()); + } + + ArrayList values = new ArrayList<>(); + if (v1 < v2) + { + for (int i = v1; i <= v2; ++i) + { + values.add(i); + } + } + else if (v1 > v2) + { + int i; + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + for (i = v1; i <= max; ++i) + { + values.add(i); + } + for (i = min; i <= v2; ++i) + { + values.add(i); + } + } + else + { + values.add(v1); + } + + return values; + } + + public boolean match(TimeZone timezone, long millis) + { + GregorianCalendar gc = new GregorianCalendar(timezone); + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + for (int i = 0; i < _matcherSize; ++i) + { + boolean eval = false; + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, -_weekOfYearAdder.get(i).intValue()); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, -_dayOfYearAdder.get(i).intValue()); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, -_hourAdder.get(i).intValue()); + } + int minute = gc.get(MONTH_MAX_VALUE); + int hour = gc.get(11); + int dayOfMonth = gc.get(5); + int month = gc.get(2) + 1; + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + int year = gc.get(1); + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + @SuppressWarnings("unused") + boolean bl = minuteMatcher.match(minute) && hourMatcher.match(hour) && (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, gc.isLeapYear(year)) : dayOfMonthMatcher.match(dayOfMonth)) && monthMatcher.match(month) && dayOfWeekMatcher.match(dayOfWeek) ? true : (eval = false); + if (!eval) + { + continue; + } + return true; + } + return false; + } + + public boolean match(long millis) + { + return match(TimeZone.getDefault(), millis); + } + + public long next(TimeZone timezone, long millis) + { + long result = -1L; + GregorianCalendar gc = new GregorianCalendar(timezone); + for (int i = 0; i < _matcherSize; ++i) + { + long next = -1L; + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, _weekOfYearAdder.get(i)); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, _dayOfYearAdder.get(i)); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, _hourAdder.get(i)); + } + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + SEARCH: do + { + int year = gc.get(1); + boolean isLeapYear = gc.isLeapYear(year); + for (int month = gc.get(2) + 1; month <= MONTH_MAX_VALUE; ++month) + { + if (monthMatcher.match(month)) + { + gc.set(2, month - 1); + int maxDayOfMonth = DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + for (int dayOfMonth = gc.get(5); dayOfMonth <= maxDayOfMonth; ++dayOfMonth) + { + if (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, isLeapYear) : dayOfMonthMatcher.match(dayOfMonth)) + { + gc.set(5, dayOfMonth); + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + if (dayOfWeekMatcher.match(dayOfWeek)) + { + for (int hour = gc.get(11); hour <= HOUR_MAX_VALUE; ++hour) + { + if (hourMatcher.match(hour)) + { + gc.set(11, hour); + for (int minute = gc.get(MONTH_MAX_VALUE); minute <= MINUTE_MAX_VALUE; ++minute) + { + if (!minuteMatcher.match(minute)) + { + continue; + } + + gc.set(MONTH_MAX_VALUE, minute); + long next0 = gc.getTimeInMillis(); + if (next0 <= millis) + { + continue; + } + + if ((next != -1L) && (next0 >= next)) + { + break SEARCH; + } + + next = next0; + if (_hourAdderRnd.containsKey(i)) + { + next += Rnd.get(_hourAdderRnd.get(i)) * 60 * 60 * 1000L; + } + + if (!_minuteAdderRnd.containsKey(i)) + { + break SEARCH; + } + + next += Rnd.get(_minuteAdderRnd.get(i)) * 60 * 1000L; + break SEARCH; + } + } + gc.set(MONTH_MAX_VALUE, 0); + } + } + } + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + } + gc.set(5, 1); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + gc.set(2, 0); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + gc.roll(1, true); + } + + while (true); + if ((next <= millis) || ((result != -1L) && (next >= result))) + { + continue; + } + + result = next; + } + return result; + } + + @Override + public long next(long millis) + { + return next(TimeZone.getDefault(), millis); + } + + @Override + public String toString() + { + return _asString; + } + + private static int parseAlias(String value, String[] aliases, int offset) throws Exception + { + for (int i = 0; i < aliases.length; ++i) + { + if (!aliases[i].equalsIgnoreCase(value)) + { + continue; + } + return offset + i; + } + throw new Exception("invalid alias \"" + value + "\""); + } + + private static class DayOfMonthValueMatcher extends IntArrayValueMatcher + { + private static final int[] lastDays = new int[] + { + DAY_OF_MONTH_MAX_VALUE, + 28, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE + }; + + public DayOfMonthValueMatcher(List integers) + { + super(integers); + } + + public boolean match(int value, int month, boolean isLeapYear) + { + return super.match(value) || ((value > 27) && match(32) && DayOfMonthValueMatcher.isLastDayOfMonth(value, month, isLeapYear)); + } + + public static int getLastDayOfMonth(int month, boolean isLeapYear) + { + if (isLeapYear && (month == 2)) + { + return 29; + } + + return lastDays[month - 1]; + } + + public static boolean isLastDayOfMonth(int value, int month, boolean isLeapYear) + { + return value == DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + } + } + + private static class IntArrayValueMatcher implements ValueMatcher + { + private final int[] values; + + public IntArrayValueMatcher(List integers) + { + int size = integers.size(); + values = new int[size]; + for (int i = 0; i < size; ++i) + { + try + { + values[i] = integers.get(i); + continue; + } + catch (Exception e) + { + throw new IllegalArgumentException(e.getMessage()); + } + } + } + + @Override + public boolean match(int value) + { + for (int i = 0; i < values.length; ++i) + { + if (values[i] != value) + { + continue; + } + return true; + } + return false; + } + } + + private static class AlwaysTrueValueMatcher implements ValueMatcher + { + private AlwaysTrueValueMatcher() + { + } + + @Override + public boolean match(int value) + { + return true; + } + } + + private static interface ValueMatcher + { + public boolean match(int var1); + } + + private static class DayOfWeekValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + }; + + public DayOfWeekValueParser() + { + super(DAY_OF_WEEK_MIN_VALUE, DAY_OF_WEEK_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value) % DAY_OF_WEEK_MAX_VALUE; + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 0); + } + } + } + + private static class MonthValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "jan", + "feb", + "mar", + "apr", + "may", + "jun", + "jul", + "aug", + "sep", + "oct", + "nov", + "dec" + }; + + public MonthValueParser() + { + super(MONTH_MIN_VALUE, MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value); + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 1); + } + } + } + + private static class DayOfMonthValueParser extends SimpleValueParser + { + public DayOfMonthValueParser() + { + super(DAY_OF_MONTH_MIN_VALUE, DAY_OF_MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + if (value.equalsIgnoreCase("L")) + { + return 32; + } + return super.parse(value); + } + } + + private static class HourValueParser extends SimpleValueParser + { + public HourValueParser() + { + super(HOUR_MIN_VALUE, HOUR_MAX_VALUE); + } + } + + private static class MinuteValueParser extends SimpleValueParser + { + public MinuteValueParser() + { + super(MINUTE_MIN_VALUE, MINUTE_MAX_VALUE); + } + } + + private static class SimpleValueParser implements ValueParser + { + protected int _minValue; + protected int _maxValue; + + public SimpleValueParser(int minValue, int maxValue) + { + _minValue = minValue; + _maxValue = maxValue; + } + + @Override + public int parse(String value) throws Exception + { + int i; + try + { + i = Integer.parseInt(value); + } + catch (NumberFormatException e) + { + throw new Exception("invalid integer value"); + } + if ((i < _minValue) || (i > _maxValue)) + { + throw new Exception("value out of range"); + } + return i; + } + + @Override + public int getMinValue() + { + return _minValue; + } + + @Override + public int getMaxValue() + { + return _maxValue; + } + } + + private static interface ValueParser + { + public int parse(String var1) throws Exception; + + public int getMinValue(); + + public int getMaxValue(); + } +} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/GameServer.java index 15d51f0545..0f4bb23ffa 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/GameServer.java @@ -67,7 +67,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemHPBonusData; import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -387,8 +386,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/Shutdown.java index 585b663269..f222a68ba7 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/Shutdown.java @@ -29,7 +29,6 @@ import org.l2jmobius.gameserver.data.SchemeBufferTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -453,8 +452,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java deleted file mode 100644 index fff7561e47..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosResult -{ - TIE, - WIN, - LOSE -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index a49acb2a54..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANT_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); - resetDailyMissionRewards(); resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); + resetDailyMissionRewards(); + resetAttendanceRewards(); resetVip(); - onResetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -86,8 +106,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -105,8 +124,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -153,12 +213,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -281,7 +340,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 4f663f1e96..4835e884e6 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java index 4eada88274..20a9bc5ad5 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5036,15 +5036,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Summon.java index 4b09eca1d7..4bc65f3e09 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 81673e4679..736d53df24 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -128,7 +128,6 @@ import org.l2jmobius.gameserver.instancemanager.RecipeManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -183,7 +182,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -191,7 +189,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -219,7 +216,6 @@ import org.l2jmobius.gameserver.model.fishing.Fishing; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -695,10 +691,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -725,7 +717,8 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -2889,11 +2882,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4845,10 +4834,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5009,7 +4994,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5336,7 +5321,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8049,7 +8034,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8110,22 +8095,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return getTeam() != attacker.getTeam(); } // Check if the attacker is a Playable @@ -9293,12 +9269,12 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) + if (_inOlympiadMode) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; return false; } - if (isOnEvent()) // custom event message + if (isOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11093,12 +11069,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -12867,16 +12837,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -12975,21 +12935,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13049,13 +12994,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13069,66 +13007,40 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13690,63 +13602,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index a30002000f..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,668 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 3ed2685a6f..94eee3bae6 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERING_FOR_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/events/EventType.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/events/EventType.java index 9c29411ba7..3c8909d635 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/events/EventType.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/events/EventType.java @@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.model.events; import org.l2jmobius.commons.util.CommonUtil; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttack; @@ -204,9 +203,6 @@ public enum EventType // Olympiad events ON_OLYMPIAD_MATCH_RESULT(OnOlympiadMatchResult.class, void.class), - // Ceremony of Chaos events - ON_CEREMONY_OF_CHAOS_MATCH_RESULT(OnCeremonyOfChaosMatchResult.class, void.class), - // Playable events ON_PLAYABLE_EXP_CHANGED(OnPlayableExpChanged.class, void.class, TerminateReturn.class), diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java deleted file mode 100644 index fb0f2bb3da..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; - -import java.util.List; - -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; - -/** - * @author UnAfraid - */ -public class OnCeremonyOfChaosMatchResult implements IBaseEvent -{ - private final List _winners; - private final List _members; - - public OnCeremonyOfChaosMatchResult(List winners, List members) - { - _winners = winners; - _members = members; - } - - public List getWinners() - { - return _winners; - } - - public List getMembers() - { - return _members; - } - - @Override - public EventType getType() - { - return EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index b323a33915..29cce0c911 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANT_ZONE); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/Item.java index e6b83064de..09b6f3d281 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -146,7 +145,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -219,7 +218,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -854,9 +853,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -931,11 +930,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 3ff447bc23..ba7652e83c 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index b65afbc37b..7dd3e39882 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java index 832172d8a8..f32def2100 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java @@ -37,9 +37,6 @@ import org.l2jmobius.gameserver.network.clientpackets.attendance.RequestVipAtten import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestChangeAttributeCancel; import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestChangeAttributeItem; import org.l2jmobius.gameserver.network.clientpackets.attributechange.SendChangeAttributeTargetItem; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCancelCuriousHouse; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCuriousHouseHtml; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestJoinCuriousHouse; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyInfo; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyItem; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionCancel; @@ -280,13 +277,13 @@ public enum ExIncomingPackets implements IIncomingPackets REQUEST_MENTEE_WAITING_LIST(0xB8, RequestMenteeWaitingList::new, ConnectionState.IN_GAME), REQUEST_CLAN_ASK_JOIN_BY_NAME(0xB9, RequestClanAskJoinByName::new, ConnectionState.IN_GAME), REQUEST_IN_ZONE_WAITING_TIME(0xBA, RequestInzoneWaitingTime::new, ConnectionState.IN_GAME), - REQUEST_JOIN_CURIOUS_HOUSE(0xBB, RequestJoinCuriousHouse::new, ConnectionState.IN_GAME), - REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, RequestCancelCuriousHouse::new, ConnectionState.IN_GAME), + REQUEST_JOIN_CURIOUS_HOUSE(0xBB, null, ConnectionState.IN_GAME), + REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, null, ConnectionState.IN_GAME), REQUEST_LEAVE_CURIOUS_HOUSE(0xBD, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_LIST_CURIOUS_HOUSE(0xBE, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_CURIOUS_HOUSE(0xBF, null, ConnectionState.IN_GAME), REQUEST_LEAVE_OBSERVING_CURIOUS_HOUSE(0xC0, null, ConnectionState.IN_GAME), - REQUEST_CURIOUS_HOUSE_HTML(0xC1, RequestCuriousHouseHtml::new, ConnectionState.IN_GAME), + REQUEST_CURIOUS_HOUSE_HTML(0xC1, null, ConnectionState.IN_GAME), REQUEST_CURIOUS_HOUSE_RECORD(0xC2, null, ConnectionState.IN_GAME), EX_SYSSTRING(0xC3, null, ConnectionState.IN_GAME), REQUEST_EX_TRY_TO_PUT_SHAPE_SHIFTING_TARGET_ITEM(0xC4, RequestExTryToPutShapeShiftingTargetItem::new, ConnectionState.IN_GAME), diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index d3313f5858..92a89e3a12 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -44,7 +44,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -425,11 +424,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index b0676e562d..c2cb56b495 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java deleted file mode 100644 index ce871f6a18..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestCancelCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java deleted file mode 100644 index a4e6f04627..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Sdw - */ -public class RequestCuriousHouseHtml implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java deleted file mode 100644 index f0c221d875..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestJoinCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 9171a63f56..f2f1428fad 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -265,7 +261,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java deleted file mode 100644 index 372432ef02..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseEnter implements IClientOutgoingPacket -{ - public static final ExCuriousHouseEnter STATIC_PACKET = new ExCuriousHouseEnter(); - - private ExCuriousHouseEnter() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_ENTER.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java deleted file mode 100644 index 50e1e74725..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseLeave implements IClientOutgoingPacket -{ - public static final ExCuriousHouseLeave STATIC_PACKET = new ExCuriousHouseLeave(); - - private ExCuriousHouseLeave() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_LEAVE.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java deleted file mode 100644 index d26eee8d89..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import java.util.Collection; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseMemberList implements IClientOutgoingPacket -{ - private final int _id; - private final int _maxPlayers; - private final Collection _players; - - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) - { - _id = id; - _maxPlayers = maxPlayers; - _players = players; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_MEMBER_LIST.writeId(packet); - - packet.writeD(_id); - packet.writeD(_maxPlayers); - packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) - { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } - } - return true; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java deleted file mode 100644 index 14dca9be4a..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseObserveMode implements IClientOutgoingPacket -{ - public static final ExCuriousHouseObserveMode STATIC_ENABLED = new ExCuriousHouseObserveMode(0); - public static final ExCuriousHouseObserveMode STATIC_DISABLED = new ExCuriousHouseObserveMode(1); - - private final int _spectating; - - private ExCuriousHouseObserveMode(int spectating) - { - _spectating = spectating; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_OBSERVE_MODE.writeId(packet); - packet.writeC(_spectating); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java deleted file mode 100644 index b71caa5f14..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseRemainTime implements IClientOutgoingPacket -{ - private final int _time; - - public ExCuriousHouseRemainTime(int time) - { - _time = time; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_REMAIN_TIME.writeId(packet); - packet.writeD(_time); - - return true; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java deleted file mode 100644 index 1f09c4de0d..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseResult implements IClientOutgoingPacket -{ - private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; - - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) - { - _result = result; - _event = event; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); - packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> - { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java deleted file mode 100644 index abf627ab72..0000000000 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseState implements IClientOutgoingPacket -{ - public static final ExCuriousHouseState IDLE_PACKET = new ExCuriousHouseState(0); - public static final ExCuriousHouseState REGISTRATION_PACKET = new ExCuriousHouseState(1); - public static final ExCuriousHouseState PREPARE_PACKET = new ExCuriousHouseState(2); - public static final ExCuriousHouseState STARTING_PACKET = new ExCuriousHouseState(3); - - private final int _state; - - public ExCuriousHouseState(int state) - { - _state = state; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_STATE.writeId(packet); - packet.writeD(_state); - return true; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java index 2ee70b560d..5e4c984dac 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java @@ -19,9 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets.dailymission; import java.time.LocalDate; import java.util.Collection; import java.util.Collections; -import java.util.function.Function; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; @@ -29,28 +29,28 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import it.sauronsoftware.cron4j.Predictor; - /** * @author Sdw */ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket { - final PlayerInstance _player; - private final Collection _rewards; - private static final Function _remainTime = pattern -> (new Predictor(pattern).nextMatchingTime() - Chronos.currentTimeMillis()) / 1000; + private static final SchedulingPattern DAILY_REUSE_PATTERN = new SchedulingPattern("30 6 * * *"); + private static final SchedulingPattern WEEKLY_REUSE_PATTERN = new SchedulingPattern("30 6 * * 1"); + private static final SchedulingPattern MONTHLY_REUSE_PATTERN = new SchedulingPattern("30 6 1 * *"); - private final long _dayRemainTime; - private final long _weekRemainTime; - private final long _monthRemainTime; + private final PlayerInstance _player; + private final Collection _rewards; + private final int _dayRemainTime; + private final int _weekRemainTime; + private final int _monthRemainTime; public ExOneDayReceiveRewardList(PlayerInstance player, boolean sendRewards) { _player = player; _rewards = sendRewards ? DailyMissionData.getInstance().getDailyMissionData(player) : Collections.emptyList(); - _dayRemainTime = _remainTime.apply("30 6 * * *"); - _weekRemainTime = _remainTime.apply("30 6 * * 1"); - _monthRemainTime = _remainTime.apply("30 6 1 * *"); + _dayRemainTime = (int) ((DAILY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _weekRemainTime = (int) ((WEEKLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _monthRemainTime = (int) ((MONTHLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); } @Override @@ -63,9 +63,9 @@ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket OutgoingPackets.EX_ONE_DAY_RECEIVE_REWARD_LIST.writeId(packet); - packet.writeD((int) _dayRemainTime); - packet.writeD((int) _weekRemainTime); - packet.writeD((int) _monthRemainTime); + packet.writeD(_dayRemainTime); + packet.writeD(_weekRemainTime); + packet.writeD(_monthRemainTime); packet.writeC(0x17); packet.writeD(_player.getClassId().getId()); packet.writeD(LocalDate.now().getDayOfWeek().ordinal()); // Day of week diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_Classic_2.2_Antharas/.classpath b/L2J_Mobius_Classic_2.2_Antharas/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/.classpath +++ b/L2J_Mobius_Classic_2.2_Antharas/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/AdminCommands.xml b/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index ffdf9cca5f..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/Elpies.txt b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/Rabbits.txt b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/Race.txt b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 0eab305e47..7e2e26e629 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -156,7 +156,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -191,7 +191,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -249,7 +249,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -299,7 +299,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 992cd26fed..efb6423d4d 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -151,7 +151,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -176,13 +176,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -229,7 +229,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -266,6 +266,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -456,7 +457,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -483,7 +484,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -536,7 +537,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -583,7 +584,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -610,7 +611,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -641,7 +642,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -728,7 +729,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -780,7 +781,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -885,7 +886,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java index 33c1ad74b4..70bd0e70c2 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java @@ -21,7 +21,6 @@ import java.util.logging.Logger; import org.l2jmobius.gameserver.handler.DailyMissionHandler; import handlers.dailymissionhandlers.BossDailyMissionHandler; -import handlers.dailymissionhandlers.CeremonyOfChaosDailyMissionHandler; import handlers.dailymissionhandlers.FishingDailyMissionHandler; import handlers.dailymissionhandlers.LevelDailyMissionHandler; import handlers.dailymissionhandlers.LoginMonthDailyMissionHandler; @@ -45,7 +44,6 @@ public class DailyMissionMasterHandler DailyMissionHandler.getInstance().registerHandler("quest", QuestDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("olympiad", OlympiadDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("siege", SiegeDailyMissionHandler::new); - DailyMissionHandler.getInstance().registerHandler("ceremonyofchaos", CeremonyOfChaosDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("boss", BossDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("fishing", FishingDailyMissionHandler::new); LOGGER.info(DailyMissionMasterHandler.class.getSimpleName() + ": Loaded " + DailyMissionHandler.getInstance().size() + " handlers."); diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/MasterHandler.java index 660f187dc9..4adf498c85 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -143,7 +142,6 @@ import handlers.bypasshandlers.Buy; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -412,7 +410,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -481,7 +478,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java deleted file mode 100644 index d03e8e82f6..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.dailymissionhandlers; - -import org.l2jmobius.gameserver.enums.DailyMissionStatus; -import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler; -import org.l2jmobius.gameserver.model.DailyMissionDataHolder; -import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.Containers; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosDailyMissionHandler extends AbstractDailyMissionHandler -{ - private final int _amount; - - public CeremonyOfChaosDailyMissionHandler(DailyMissionDataHolder holder) - { - super(holder); - _amount = holder.getRequiredCompletions(); - } - - @Override - public void init() - { - Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT, (OnCeremonyOfChaosMatchResult event) -> onCeremonyOfChaosMatchResult(event), this)); - } - - @Override - public boolean isAvailable(PlayerInstance player) - { - final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); - if (entry != null) - { - switch (entry.getStatus()) - { - case NOT_AVAILABLE: // Initial state - { - if (entry.getProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - storePlayerEntry(entry); - } - break; - } - case AVAILABLE: - { - return true; - } - } - } - return false; - } - - private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) - { - event.getMembers().forEach(member -> - { - final DailyMissionPlayerEntry entry = getPlayerEntry(member.getObjectId(), true); - if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE) - { - if (entry.increaseProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - } - storePlayerEntry(entry); - } - }); - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/01000-01099.xml index f84b0c412b..2f6a33a4c4 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/01000-01099.xml @@ -623,7 +623,7 @@ - + @@ -646,7 +646,7 @@ - + @@ -740,7 +740,7 @@ - + diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/01500-01599.xml index 410fa52a73..c9b2196127 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/05200-05299.xml index 8a0727ebaa..fa9c409200 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/05200-05299.xml @@ -313,7 +313,7 @@ - + @@ -334,7 +334,7 @@ - + @@ -355,7 +355,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -397,7 +397,7 @@ - + @@ -418,7 +418,7 @@ - + @@ -439,7 +439,7 @@ - + @@ -460,7 +460,7 @@ - + @@ -481,7 +481,7 @@ - + @@ -502,7 +502,7 @@ - + @@ -523,7 +523,7 @@ - + @@ -544,7 +544,7 @@ - + @@ -565,7 +565,7 @@ - + @@ -586,7 +586,7 @@ - + @@ -607,7 +607,7 @@ - + diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/05500-05599.xml index a4cfa0c743..d6aa6ce3d5 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/05500-05599.xml @@ -736,7 +736,7 @@ - + @@ -755,7 +755,7 @@ - + diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/06400-06499.xml index e3e9ef44ba..15660e58ee 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/29600-29699.xml b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/29600-29699.xml index ae924a7275..49625dc0c6 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/29600-29699.xml +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/29600-29699.xml @@ -1111,7 +1111,7 @@ - + @@ -1136,7 +1136,7 @@ - + diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/49400-49499.xml b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/49400-49499.xml index 92676c71d9..1271edbcaf 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/49400-49499.xml +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/stats/items/49400-49499.xml @@ -1366,7 +1366,7 @@ - + diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/items.xsd index 4663f1d0bc..9afe2f7b99 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_Classic_2.2_Antharas/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_Classic_2.2_Antharas/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_Classic_2.2_Antharas/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_Classic_2.2_Antharas/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/commons/time/AddPattern.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/commons/time/AddPattern.java new file mode 100644 index 0000000000..893a279fd4 --- /dev/null +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/commons/time/AddPattern.java @@ -0,0 +1,119 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class AddPattern implements NextTime +{ + private int _monthInc = -1; + private int _monthSet = -1; + private int _dayOfMonthInc = -1; + private int _dayOfMonthSet = -1; + private int _hourOfDayInc = -1; + private int _hourOfDaySet = -1; + private int _minuteInc = -1; + private int _minuteSet = -1; + + public AddPattern(String pattern) + { + String[] timeparts; + String[] parts = pattern.split("\\s+"); + if (parts.length == 2) + { + String datemodstr; + String datepartsstr = parts[0]; + String[] dateparts = datepartsstr.split(":"); + if (dateparts.length == 2) + { + if (dateparts[0].startsWith("+")) + { + _monthInc = Integer.parseInt(dateparts[0].substring(1)); + } + else + { + _monthSet = Integer.parseInt(dateparts[0]) - 1; + } + } + if ((datemodstr = dateparts[dateparts.length - 1]).startsWith("+")) + { + _dayOfMonthInc = Integer.parseInt(datemodstr.substring(1)); + } + else + { + _dayOfMonthSet = Integer.parseInt(datemodstr); + } + } + if ((timeparts = parts[parts.length - 1].split(":"))[0].startsWith("+")) + { + _hourOfDayInc = Integer.parseInt(timeparts[0].substring(1)); + } + else + { + _hourOfDaySet = Integer.parseInt(timeparts[0]); + } + if (timeparts[1].startsWith("+")) + { + _minuteInc = Integer.parseInt(timeparts[1].substring(1)); + } + else + { + _minuteSet = Integer.parseInt(timeparts[1]); + } + } + + @Override + public long next(long millis) + { + final GregorianCalendar gc = new GregorianCalendar(TimeZone.getDefault()); + gc.setTimeInMillis(millis); + if (_monthInc >= 0) + { + gc.add(2, _monthInc); + } + if (_monthSet >= 0) + { + gc.set(2, _monthSet); + } + if (_dayOfMonthInc >= 0) + { + gc.add(5, _dayOfMonthInc); + } + if (_dayOfMonthSet >= 0) + { + gc.set(5, _dayOfMonthSet); + } + if (_hourOfDayInc >= 0) + { + gc.add(11, _hourOfDayInc); + } + if (_hourOfDaySet >= 0) + { + gc.set(11, _hourOfDaySet); + } + if (_minuteInc >= 0) + { + gc.add(12, _minuteInc); + } + if (_minuteSet >= 0) + { + gc.set(12, _minuteSet); + } + return gc.getTimeInMillis(); + } +} diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/commons/time/NextTime.java similarity index 84% rename from L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java rename to L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/commons/time/NextTime.java index a1db9c20b8..d08d90164d 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/commons/time/NextTime.java @@ -14,11 +14,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.model.eventengine; +package org.l2jmobius.commons.time; -/** - * @author UnAfraid - */ -public interface IEventState +public interface NextTime { + public long next(long var1); } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/commons/time/SchedulingPattern.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/commons/time/SchedulingPattern.java new file mode 100644 index 0000000000..d9fdd655f3 --- /dev/null +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/commons/time/SchedulingPattern.java @@ -0,0 +1,841 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.ArrayList; +import java.util.GregorianCalendar; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.TimeZone; +import java.util.TreeMap; + +import org.l2jmobius.commons.util.Rnd; + +public class SchedulingPattern implements NextTime +{ + private static final int MINUTE_MIN_VALUE = 0; + private static final int MINUTE_MAX_VALUE = 59; + private static final int HOUR_MIN_VALUE = 0; + private static final int HOUR_MAX_VALUE = 23; + private static final int DAY_OF_MONTH_MIN_VALUE = 1; + private static final int DAY_OF_MONTH_MAX_VALUE = 31; + private static final int MONTH_MIN_VALUE = 1; + private static final int MONTH_MAX_VALUE = 12; + private static final int DAY_OF_WEEK_MIN_VALUE = 0; + private static final int DAY_OF_WEEK_MAX_VALUE = 7; + private static final ValueParser MINUTE_VALUE_PARSER = new MinuteValueParser(); + private static final ValueParser HOUR_VALUE_PARSER = new HourValueParser(); + private static final ValueParser DAY_OF_MONTH_VALUE_PARSER = new DayOfMonthValueParser(); + private static final ValueParser MONTH_VALUE_PARSER = new MonthValueParser(); + private static final ValueParser DAY_OF_WEEK_VALUE_PARSER = new DayOfWeekValueParser(); + private final String _asString; + protected List _minuteMatchers = new ArrayList<>(); + protected List _hourMatchers = new ArrayList<>(); + protected List _dayOfMonthMatchers = new ArrayList<>(); + protected List _monthMatchers = new ArrayList<>(); + protected List _dayOfWeekMatchers = new ArrayList<>(); + protected int _matcherSize = 0; + protected Map _hourAdder = new TreeMap<>(); + protected Map _hourAdderRnd = new TreeMap<>(); + protected Map _dayOfYearAdder = new TreeMap<>(); + protected Map _minuteAdderRnd = new TreeMap<>(); + protected Map _weekOfYearAdder = new TreeMap<>(); + + public static boolean validate(String schedulingPattern) + { + try + { + new SchedulingPattern(schedulingPattern); + } + catch (RuntimeException e) + { + return false; + } + return true; + } + + public SchedulingPattern(String pattern) throws RuntimeException + { + _asString = pattern; + StringTokenizer st1 = new StringTokenizer(pattern, "|"); + if (st1.countTokens() < 1) + { + throw new RuntimeException("invalid pattern: \"" + pattern + "\""); + } + + while (st1.hasMoreTokens()) + { + int i; + String localPattern = st1.nextToken(); + StringTokenizer st2 = new StringTokenizer(localPattern, " \t"); + int tokCnt = st2.countTokens(); + if ((tokCnt < 5) || (tokCnt > 6)) + { + throw new RuntimeException("invalid pattern: \"" + localPattern + "\""); + } + + try + { + String minutePattern = st2.nextToken(); + String[] minutePatternParts = minutePattern.split(":"); + if (minutePatternParts.length > 1) + { + for (i = 0; i < (minutePatternParts.length - 1); ++i) + { + if (minutePatternParts[i].length() <= 1) + { + continue; + } + + if (minutePatternParts[i].startsWith("~")) + { + _minuteAdderRnd.put(_matcherSize, Integer.parseInt(minutePatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + minutePatternParts[i] + "\""); + } + minutePattern = minutePatternParts[minutePatternParts.length - 1]; + } + _minuteMatchers.add(buildValueMatcher(minutePattern, MINUTE_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing minutes field: " + e.getMessage() + "."); + } + + try + { + String hourPattern = st2.nextToken(); + String[] hourPatternParts = hourPattern.split(":"); + if (hourPatternParts.length > 1) + { + for (i = 0; i < (hourPatternParts.length - 1); ++i) + { + if (hourPatternParts[i].length() <= 1) + { + continue; + } + + if (hourPatternParts[i].startsWith("+")) + { + _hourAdder.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + if (hourPatternParts[i].startsWith("~")) + { + _hourAdderRnd.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + hourPatternParts[i] + "\""); + } + hourPattern = hourPatternParts[hourPatternParts.length - 1]; + } + _hourMatchers.add(buildValueMatcher(hourPattern, HOUR_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing hours field: " + e.getMessage() + "."); + } + + try + { + String dayOfMonthPattern = st2.nextToken(); + String[] dayOfMonthPatternParts = dayOfMonthPattern.split(":"); + if (dayOfMonthPatternParts.length > 1) + { + for (i = 0; i < (dayOfMonthPatternParts.length - 1); ++i) + { + if (dayOfMonthPatternParts[i].length() <= 1) + { + continue; + } + + if (dayOfMonthPatternParts[i].startsWith("+")) + { + _dayOfYearAdder.put(_matcherSize, Integer.parseInt(dayOfMonthPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown day modifier \"" + dayOfMonthPatternParts[i] + "\""); + } + dayOfMonthPattern = dayOfMonthPatternParts[dayOfMonthPatternParts.length - 1]; + } + _dayOfMonthMatchers.add(buildValueMatcher(dayOfMonthPattern, DAY_OF_MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of month field: " + e.getMessage() + "."); + } + + try + { + _monthMatchers.add(buildValueMatcher(st2.nextToken(), MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing months field: " + e.getMessage() + "."); + } + + try + { + _dayOfWeekMatchers.add(buildValueMatcher(st2.nextToken(), DAY_OF_WEEK_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + + if (st2.hasMoreTokens()) + { + try + { + String weekOfYearAdderText = st2.nextToken(); + if (weekOfYearAdderText.charAt(0) != '+') + { + throw new RuntimeException("Unknown week of year addition in pattern \"" + localPattern + "\"."); + } + weekOfYearAdderText = weekOfYearAdderText.substring(1); + _weekOfYearAdder.put(_matcherSize, Integer.parseInt(weekOfYearAdderText)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + } + ++_matcherSize; + } + } + + private ValueMatcher buildValueMatcher(String str, ValueParser parser) throws Exception + { + if ((str.length() == 1) && str.equals("*")) + { + return new AlwaysTrueValueMatcher(); + } + + ArrayList values = new ArrayList<>(); + StringTokenizer st = new StringTokenizer(str, ","); + while (st.hasMoreTokens()) + { + List local; + String element = st.nextToken(); + try + { + local = parseListElement(element, parser); + } + catch (Exception e) + { + throw new Exception("invalid field \"" + str + "\", invalid element \"" + element + "\", " + e.getMessage()); + } + + for (Integer value : local) + { + if (values.contains(value)) + { + continue; + } + + values.add(value); + } + } + + if (values.size() == 0) + { + throw new Exception("invalid field \"" + str + "\""); + } + + if (parser == DAY_OF_MONTH_VALUE_PARSER) + { + return new DayOfMonthValueMatcher(values); + } + + return new IntArrayValueMatcher(values); + } + + private List parseListElement(String str, ValueParser parser) throws Exception + { + List values; + StringTokenizer st = new StringTokenizer(str, "/"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + try + { + values = parseRange(st.nextToken(), parser); + } + catch (Exception e) + { + throw new Exception("invalid range, " + e.getMessage()); + } + + if (size == 2) + { + int div; + String dStr = st.nextToken(); + + try + { + div = Integer.parseInt(dStr); + } + catch (NumberFormatException e) + { + throw new Exception("invalid divisor \"" + dStr + "\""); + } + + if (div < 1) + { + throw new Exception("non positive divisor \"" + div + "\""); + } + + ArrayList values2 = new ArrayList<>(); + for (int i = 0; i < values.size(); i += div) + { + values2.add(values.get(i)); + } + + return values2; + } + return values; + } + + private List parseRange(String str, ValueParser parser) throws Exception + { + int v2; + int v1; + if (str.equals("*")) + { + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + ArrayList values = new ArrayList<>(); + for (int i = min; i <= max; ++i) + { + values.add(i); + } + return values; + } + + StringTokenizer st = new StringTokenizer(str, "-"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + String v1Str = st.nextToken(); + try + { + v1 = parser.parse(v1Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v1Str + "\", " + e.getMessage()); + } + + if (size == 1) + { + ArrayList values = new ArrayList<>(); + values.add(v1); + return values; + } + + String v2Str = st.nextToken(); + try + { + v2 = parser.parse(v2Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v2Str + "\", " + e.getMessage()); + } + + ArrayList values = new ArrayList<>(); + if (v1 < v2) + { + for (int i = v1; i <= v2; ++i) + { + values.add(i); + } + } + else if (v1 > v2) + { + int i; + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + for (i = v1; i <= max; ++i) + { + values.add(i); + } + for (i = min; i <= v2; ++i) + { + values.add(i); + } + } + else + { + values.add(v1); + } + + return values; + } + + public boolean match(TimeZone timezone, long millis) + { + GregorianCalendar gc = new GregorianCalendar(timezone); + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + for (int i = 0; i < _matcherSize; ++i) + { + boolean eval = false; + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, -_weekOfYearAdder.get(i).intValue()); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, -_dayOfYearAdder.get(i).intValue()); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, -_hourAdder.get(i).intValue()); + } + int minute = gc.get(MONTH_MAX_VALUE); + int hour = gc.get(11); + int dayOfMonth = gc.get(5); + int month = gc.get(2) + 1; + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + int year = gc.get(1); + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + @SuppressWarnings("unused") + boolean bl = minuteMatcher.match(minute) && hourMatcher.match(hour) && (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, gc.isLeapYear(year)) : dayOfMonthMatcher.match(dayOfMonth)) && monthMatcher.match(month) && dayOfWeekMatcher.match(dayOfWeek) ? true : (eval = false); + if (!eval) + { + continue; + } + return true; + } + return false; + } + + public boolean match(long millis) + { + return match(TimeZone.getDefault(), millis); + } + + public long next(TimeZone timezone, long millis) + { + long result = -1L; + GregorianCalendar gc = new GregorianCalendar(timezone); + for (int i = 0; i < _matcherSize; ++i) + { + long next = -1L; + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, _weekOfYearAdder.get(i)); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, _dayOfYearAdder.get(i)); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, _hourAdder.get(i)); + } + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + SEARCH: do + { + int year = gc.get(1); + boolean isLeapYear = gc.isLeapYear(year); + for (int month = gc.get(2) + 1; month <= MONTH_MAX_VALUE; ++month) + { + if (monthMatcher.match(month)) + { + gc.set(2, month - 1); + int maxDayOfMonth = DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + for (int dayOfMonth = gc.get(5); dayOfMonth <= maxDayOfMonth; ++dayOfMonth) + { + if (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, isLeapYear) : dayOfMonthMatcher.match(dayOfMonth)) + { + gc.set(5, dayOfMonth); + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + if (dayOfWeekMatcher.match(dayOfWeek)) + { + for (int hour = gc.get(11); hour <= HOUR_MAX_VALUE; ++hour) + { + if (hourMatcher.match(hour)) + { + gc.set(11, hour); + for (int minute = gc.get(MONTH_MAX_VALUE); minute <= MINUTE_MAX_VALUE; ++minute) + { + if (!minuteMatcher.match(minute)) + { + continue; + } + + gc.set(MONTH_MAX_VALUE, minute); + long next0 = gc.getTimeInMillis(); + if (next0 <= millis) + { + continue; + } + + if ((next != -1L) && (next0 >= next)) + { + break SEARCH; + } + + next = next0; + if (_hourAdderRnd.containsKey(i)) + { + next += Rnd.get(_hourAdderRnd.get(i)) * 60 * 60 * 1000L; + } + + if (!_minuteAdderRnd.containsKey(i)) + { + break SEARCH; + } + + next += Rnd.get(_minuteAdderRnd.get(i)) * 60 * 1000L; + break SEARCH; + } + } + gc.set(MONTH_MAX_VALUE, 0); + } + } + } + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + } + gc.set(5, 1); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + gc.set(2, 0); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + gc.roll(1, true); + } + + while (true); + if ((next <= millis) || ((result != -1L) && (next >= result))) + { + continue; + } + + result = next; + } + return result; + } + + @Override + public long next(long millis) + { + return next(TimeZone.getDefault(), millis); + } + + @Override + public String toString() + { + return _asString; + } + + private static int parseAlias(String value, String[] aliases, int offset) throws Exception + { + for (int i = 0; i < aliases.length; ++i) + { + if (!aliases[i].equalsIgnoreCase(value)) + { + continue; + } + return offset + i; + } + throw new Exception("invalid alias \"" + value + "\""); + } + + private static class DayOfMonthValueMatcher extends IntArrayValueMatcher + { + private static final int[] lastDays = new int[] + { + DAY_OF_MONTH_MAX_VALUE, + 28, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE + }; + + public DayOfMonthValueMatcher(List integers) + { + super(integers); + } + + public boolean match(int value, int month, boolean isLeapYear) + { + return super.match(value) || ((value > 27) && match(32) && DayOfMonthValueMatcher.isLastDayOfMonth(value, month, isLeapYear)); + } + + public static int getLastDayOfMonth(int month, boolean isLeapYear) + { + if (isLeapYear && (month == 2)) + { + return 29; + } + + return lastDays[month - 1]; + } + + public static boolean isLastDayOfMonth(int value, int month, boolean isLeapYear) + { + return value == DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + } + } + + private static class IntArrayValueMatcher implements ValueMatcher + { + private final int[] values; + + public IntArrayValueMatcher(List integers) + { + int size = integers.size(); + values = new int[size]; + for (int i = 0; i < size; ++i) + { + try + { + values[i] = integers.get(i); + continue; + } + catch (Exception e) + { + throw new IllegalArgumentException(e.getMessage()); + } + } + } + + @Override + public boolean match(int value) + { + for (int i = 0; i < values.length; ++i) + { + if (values[i] != value) + { + continue; + } + return true; + } + return false; + } + } + + private static class AlwaysTrueValueMatcher implements ValueMatcher + { + private AlwaysTrueValueMatcher() + { + } + + @Override + public boolean match(int value) + { + return true; + } + } + + private static interface ValueMatcher + { + public boolean match(int var1); + } + + private static class DayOfWeekValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + }; + + public DayOfWeekValueParser() + { + super(DAY_OF_WEEK_MIN_VALUE, DAY_OF_WEEK_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value) % DAY_OF_WEEK_MAX_VALUE; + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 0); + } + } + } + + private static class MonthValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "jan", + "feb", + "mar", + "apr", + "may", + "jun", + "jul", + "aug", + "sep", + "oct", + "nov", + "dec" + }; + + public MonthValueParser() + { + super(MONTH_MIN_VALUE, MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value); + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 1); + } + } + } + + private static class DayOfMonthValueParser extends SimpleValueParser + { + public DayOfMonthValueParser() + { + super(DAY_OF_MONTH_MIN_VALUE, DAY_OF_MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + if (value.equalsIgnoreCase("L")) + { + return 32; + } + return super.parse(value); + } + } + + private static class HourValueParser extends SimpleValueParser + { + public HourValueParser() + { + super(HOUR_MIN_VALUE, HOUR_MAX_VALUE); + } + } + + private static class MinuteValueParser extends SimpleValueParser + { + public MinuteValueParser() + { + super(MINUTE_MIN_VALUE, MINUTE_MAX_VALUE); + } + } + + private static class SimpleValueParser implements ValueParser + { + protected int _minValue; + protected int _maxValue; + + public SimpleValueParser(int minValue, int maxValue) + { + _minValue = minValue; + _maxValue = maxValue; + } + + @Override + public int parse(String value) throws Exception + { + int i; + try + { + i = Integer.parseInt(value); + } + catch (NumberFormatException e) + { + throw new Exception("invalid integer value"); + } + if ((i < _minValue) || (i > _maxValue)) + { + throw new Exception("value out of range"); + } + return i; + } + + @Override + public int getMinValue() + { + return _minValue; + } + + @Override + public int getMaxValue() + { + return _maxValue; + } + } + + private static interface ValueParser + { + public int parse(String var1) throws Exception; + + public int getMinValue(); + + public int getMaxValue(); + } +} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/GameServer.java index a7c22d933a..02460a050f 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/GameServer.java @@ -68,7 +68,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemHPBonusData; import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -389,8 +388,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/Shutdown.java index 585b663269..f222a68ba7 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/Shutdown.java @@ -29,7 +29,6 @@ import org.l2jmobius.gameserver.data.SchemeBufferTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -453,8 +452,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java deleted file mode 100644 index fff7561e47..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosResult -{ - TIE, - WIN, - LOSE -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index a49acb2a54..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANT_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); - resetDailyMissionRewards(); resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); + resetDailyMissionRewards(); + resetAttendanceRewards(); resetVip(); - onResetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -86,8 +106,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -105,8 +124,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -153,12 +213,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -281,7 +340,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 4f663f1e96..4835e884e6 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java index 4c40f0eb84..40b4ac1ce0 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5045,15 +5045,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Summon.java index 4b09eca1d7..4bc65f3e09 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 7107382272..f1967f058c 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -128,7 +128,6 @@ import org.l2jmobius.gameserver.instancemanager.RecipeManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -183,7 +182,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -191,7 +189,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -219,7 +216,6 @@ import org.l2jmobius.gameserver.model.fishing.Fishing; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -693,10 +689,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -723,7 +715,8 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -2887,11 +2880,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4830,10 +4819,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -4994,7 +4979,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5321,7 +5306,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8035,7 +8020,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8096,22 +8081,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return getTeam() != attacker.getTeam(); } // Check if the attacker is a Playable @@ -9279,12 +9255,12 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) + if (_inOlympiadMode) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; return false; } - if (isOnEvent()) // custom event message + if (isOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11079,12 +11055,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -12853,16 +12823,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -12961,21 +12921,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13035,13 +12980,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13055,66 +12993,40 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13675,63 +13587,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index a30002000f..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,668 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 3ed2685a6f..94eee3bae6 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERING_FOR_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/events/EventType.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/events/EventType.java index 9c29411ba7..3c8909d635 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/events/EventType.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/events/EventType.java @@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.model.events; import org.l2jmobius.commons.util.CommonUtil; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttack; @@ -204,9 +203,6 @@ public enum EventType // Olympiad events ON_OLYMPIAD_MATCH_RESULT(OnOlympiadMatchResult.class, void.class), - // Ceremony of Chaos events - ON_CEREMONY_OF_CHAOS_MATCH_RESULT(OnCeremonyOfChaosMatchResult.class, void.class), - // Playable events ON_PLAYABLE_EXP_CHANGED(OnPlayableExpChanged.class, void.class, TerminateReturn.class), diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java deleted file mode 100644 index fb0f2bb3da..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; - -import java.util.List; - -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; - -/** - * @author UnAfraid - */ -public class OnCeremonyOfChaosMatchResult implements IBaseEvent -{ - private final List _winners; - private final List _members; - - public OnCeremonyOfChaosMatchResult(List winners, List members) - { - _winners = winners; - _members = members; - } - - public List getWinners() - { - return _winners; - } - - public List getMembers() - { - return _members; - } - - @Override - public EventType getType() - { - return EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index b323a33915..29cce0c911 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANT_ZONE); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/Item.java index 7e07a96727..425ee05336 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -147,7 +146,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -220,7 +219,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -862,9 +861,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -939,11 +938,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 3ff447bc23..ba7652e83c 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index b65afbc37b..7dd3e39882 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java index 31ad6c8e8e..321598c407 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java @@ -37,9 +37,6 @@ import org.l2jmobius.gameserver.network.clientpackets.attendance.RequestVipAtten import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestChangeAttributeCancel; import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestChangeAttributeItem; import org.l2jmobius.gameserver.network.clientpackets.attributechange.SendChangeAttributeTargetItem; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCancelCuriousHouse; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCuriousHouseHtml; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestJoinCuriousHouse; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyInfo; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyItem; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionCancel; @@ -280,13 +277,13 @@ public enum ExIncomingPackets implements IIncomingPackets REQUEST_MENTEE_WAITING_LIST(0xB8, RequestMenteeWaitingList::new, ConnectionState.IN_GAME), REQUEST_CLAN_ASK_JOIN_BY_NAME(0xB9, RequestClanAskJoinByName::new, ConnectionState.IN_GAME), REQUEST_IN_ZONE_WAITING_TIME(0xBA, RequestInzoneWaitingTime::new, ConnectionState.IN_GAME), - REQUEST_JOIN_CURIOUS_HOUSE(0xBB, RequestJoinCuriousHouse::new, ConnectionState.IN_GAME), - REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, RequestCancelCuriousHouse::new, ConnectionState.IN_GAME), + REQUEST_JOIN_CURIOUS_HOUSE(0xBB, null, ConnectionState.IN_GAME), + REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, null, ConnectionState.IN_GAME), REQUEST_LEAVE_CURIOUS_HOUSE(0xBD, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_LIST_CURIOUS_HOUSE(0xBE, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_CURIOUS_HOUSE(0xBF, null, ConnectionState.IN_GAME), REQUEST_LEAVE_OBSERVING_CURIOUS_HOUSE(0xC0, null, ConnectionState.IN_GAME), - REQUEST_CURIOUS_HOUSE_HTML(0xC1, RequestCuriousHouseHtml::new, ConnectionState.IN_GAME), + REQUEST_CURIOUS_HOUSE_HTML(0xC1, null, ConnectionState.IN_GAME), REQUEST_CURIOUS_HOUSE_RECORD(0xC2, null, ConnectionState.IN_GAME), EX_SYSSTRING(0xC3, null, ConnectionState.IN_GAME), REQUEST_EX_TRY_TO_PUT_SHAPE_SHIFTING_TARGET_ITEM(0xC4, RequestExTryToPutShapeShiftingTargetItem::new, ConnectionState.IN_GAME), diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 94271b4d12..7fed0609c3 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -44,7 +44,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -428,11 +427,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index b0676e562d..c2cb56b495 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java deleted file mode 100644 index ce871f6a18..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestCancelCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java deleted file mode 100644 index a4e6f04627..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Sdw - */ -public class RequestCuriousHouseHtml implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java deleted file mode 100644 index f0c221d875..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestJoinCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 9171a63f56..f2f1428fad 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -265,7 +261,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java deleted file mode 100644 index 372432ef02..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseEnter implements IClientOutgoingPacket -{ - public static final ExCuriousHouseEnter STATIC_PACKET = new ExCuriousHouseEnter(); - - private ExCuriousHouseEnter() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_ENTER.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java deleted file mode 100644 index 50e1e74725..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseLeave implements IClientOutgoingPacket -{ - public static final ExCuriousHouseLeave STATIC_PACKET = new ExCuriousHouseLeave(); - - private ExCuriousHouseLeave() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_LEAVE.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java deleted file mode 100644 index d26eee8d89..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import java.util.Collection; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseMemberList implements IClientOutgoingPacket -{ - private final int _id; - private final int _maxPlayers; - private final Collection _players; - - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) - { - _id = id; - _maxPlayers = maxPlayers; - _players = players; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_MEMBER_LIST.writeId(packet); - - packet.writeD(_id); - packet.writeD(_maxPlayers); - packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) - { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } - } - return true; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java deleted file mode 100644 index 14dca9be4a..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseObserveMode implements IClientOutgoingPacket -{ - public static final ExCuriousHouseObserveMode STATIC_ENABLED = new ExCuriousHouseObserveMode(0); - public static final ExCuriousHouseObserveMode STATIC_DISABLED = new ExCuriousHouseObserveMode(1); - - private final int _spectating; - - private ExCuriousHouseObserveMode(int spectating) - { - _spectating = spectating; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_OBSERVE_MODE.writeId(packet); - packet.writeC(_spectating); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java deleted file mode 100644 index b71caa5f14..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseRemainTime implements IClientOutgoingPacket -{ - private final int _time; - - public ExCuriousHouseRemainTime(int time) - { - _time = time; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_REMAIN_TIME.writeId(packet); - packet.writeD(_time); - - return true; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java deleted file mode 100644 index 1f09c4de0d..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseResult implements IClientOutgoingPacket -{ - private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; - - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) - { - _result = result; - _event = event; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); - packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> - { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java deleted file mode 100644 index abf627ab72..0000000000 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseState implements IClientOutgoingPacket -{ - public static final ExCuriousHouseState IDLE_PACKET = new ExCuriousHouseState(0); - public static final ExCuriousHouseState REGISTRATION_PACKET = new ExCuriousHouseState(1); - public static final ExCuriousHouseState PREPARE_PACKET = new ExCuriousHouseState(2); - public static final ExCuriousHouseState STARTING_PACKET = new ExCuriousHouseState(3); - - private final int _state; - - public ExCuriousHouseState(int state) - { - _state = state; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_STATE.writeId(packet); - packet.writeD(_state); - return true; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java index 2ee70b560d..5e4c984dac 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java @@ -19,9 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets.dailymission; import java.time.LocalDate; import java.util.Collection; import java.util.Collections; -import java.util.function.Function; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; @@ -29,28 +29,28 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import it.sauronsoftware.cron4j.Predictor; - /** * @author Sdw */ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket { - final PlayerInstance _player; - private final Collection _rewards; - private static final Function _remainTime = pattern -> (new Predictor(pattern).nextMatchingTime() - Chronos.currentTimeMillis()) / 1000; + private static final SchedulingPattern DAILY_REUSE_PATTERN = new SchedulingPattern("30 6 * * *"); + private static final SchedulingPattern WEEKLY_REUSE_PATTERN = new SchedulingPattern("30 6 * * 1"); + private static final SchedulingPattern MONTHLY_REUSE_PATTERN = new SchedulingPattern("30 6 1 * *"); - private final long _dayRemainTime; - private final long _weekRemainTime; - private final long _monthRemainTime; + private final PlayerInstance _player; + private final Collection _rewards; + private final int _dayRemainTime; + private final int _weekRemainTime; + private final int _monthRemainTime; public ExOneDayReceiveRewardList(PlayerInstance player, boolean sendRewards) { _player = player; _rewards = sendRewards ? DailyMissionData.getInstance().getDailyMissionData(player) : Collections.emptyList(); - _dayRemainTime = _remainTime.apply("30 6 * * *"); - _weekRemainTime = _remainTime.apply("30 6 * * 1"); - _monthRemainTime = _remainTime.apply("30 6 1 * *"); + _dayRemainTime = (int) ((DAILY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _weekRemainTime = (int) ((WEEKLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _monthRemainTime = (int) ((MONTHLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); } @Override @@ -63,9 +63,9 @@ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket OutgoingPackets.EX_ONE_DAY_RECEIVE_REWARD_LIST.writeId(packet); - packet.writeD((int) _dayRemainTime); - packet.writeD((int) _weekRemainTime); - packet.writeD((int) _monthRemainTime); + packet.writeD(_dayRemainTime); + packet.writeD(_weekRemainTime); + packet.writeD(_monthRemainTime); packet.writeC(0x17); packet.writeD(_player.getClassId().getId()); packet.writeD(LocalDate.now().getDayOfWeek().ordinal()); // Day of week diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/.classpath b/L2J_Mobius_Classic_2.3_SevenSigns/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/.classpath +++ b/L2J_Mobius_Classic_2.3_SevenSigns/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/AdminCommands.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index ffdf9cca5f..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/Elpies.txt b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/Rabbits.txt b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/Race.txt b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 0eab305e47..7e2e26e629 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -156,7 +156,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -191,7 +191,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -249,7 +249,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -299,7 +299,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 992cd26fed..efb6423d4d 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -151,7 +151,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -176,13 +176,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -229,7 +229,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -266,6 +266,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -456,7 +457,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -483,7 +484,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -536,7 +537,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -583,7 +584,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -610,7 +611,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -641,7 +642,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -728,7 +729,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -780,7 +781,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -885,7 +886,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java index 29324b0297..9bb3842474 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java @@ -21,7 +21,6 @@ import java.util.logging.Logger; import org.l2jmobius.gameserver.handler.DailyMissionHandler; import handlers.dailymissionhandlers.BossDailyMissionHandler; -import handlers.dailymissionhandlers.CeremonyOfChaosDailyMissionHandler; import handlers.dailymissionhandlers.FishingDailyMissionHandler; import handlers.dailymissionhandlers.LevelDailyMissionHandler; import handlers.dailymissionhandlers.LoginMonthDailyMissionHandler; @@ -46,7 +45,6 @@ public class DailyMissionMasterHandler DailyMissionHandler.getInstance().registerHandler("quest", QuestDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("olympiad", OlympiadDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("siege", SiegeDailyMissionHandler::new); - DailyMissionHandler.getInstance().registerHandler("ceremonyofchaos", CeremonyOfChaosDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("boss", BossDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("fishing", FishingDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("spirit", SpiritDailyMissionHandler::new); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/MasterHandler.java index dff027d7f7..83e171cfe3 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -143,7 +142,6 @@ import handlers.bypasshandlers.Buy; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -413,7 +411,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -482,7 +479,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java deleted file mode 100644 index d03e8e82f6..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.dailymissionhandlers; - -import org.l2jmobius.gameserver.enums.DailyMissionStatus; -import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler; -import org.l2jmobius.gameserver.model.DailyMissionDataHolder; -import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.Containers; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosDailyMissionHandler extends AbstractDailyMissionHandler -{ - private final int _amount; - - public CeremonyOfChaosDailyMissionHandler(DailyMissionDataHolder holder) - { - super(holder); - _amount = holder.getRequiredCompletions(); - } - - @Override - public void init() - { - Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT, (OnCeremonyOfChaosMatchResult event) -> onCeremonyOfChaosMatchResult(event), this)); - } - - @Override - public boolean isAvailable(PlayerInstance player) - { - final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); - if (entry != null) - { - switch (entry.getStatus()) - { - case NOT_AVAILABLE: // Initial state - { - if (entry.getProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - storePlayerEntry(entry); - } - break; - } - case AVAILABLE: - { - return true; - } - } - } - return false; - } - - private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) - { - event.getMembers().forEach(member -> - { - final DailyMissionPlayerEntry entry = getPlayerEntry(member.getObjectId(), true); - if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE) - { - if (entry.increaseProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - } - storePlayerEntry(entry); - } - }); - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/01000-01099.xml index f84b0c412b..2f6a33a4c4 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/01000-01099.xml @@ -623,7 +623,7 @@ - + @@ -646,7 +646,7 @@ - + @@ -740,7 +740,7 @@ - + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/01500-01599.xml index 410fa52a73..c9b2196127 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/05200-05299.xml index 8a0727ebaa..fa9c409200 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/05200-05299.xml @@ -313,7 +313,7 @@ - + @@ -334,7 +334,7 @@ - + @@ -355,7 +355,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -397,7 +397,7 @@ - + @@ -418,7 +418,7 @@ - + @@ -439,7 +439,7 @@ - + @@ -460,7 +460,7 @@ - + @@ -481,7 +481,7 @@ - + @@ -502,7 +502,7 @@ - + @@ -523,7 +523,7 @@ - + @@ -544,7 +544,7 @@ - + @@ -565,7 +565,7 @@ - + @@ -586,7 +586,7 @@ - + @@ -607,7 +607,7 @@ - + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/05500-05599.xml index a4cfa0c743..d6aa6ce3d5 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/05500-05599.xml @@ -736,7 +736,7 @@ - + @@ -755,7 +755,7 @@ - + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/06400-06499.xml index e3e9ef44ba..15660e58ee 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/29600-29699.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/29600-29699.xml index 6222f5d4a8..ae317067fe 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/29600-29699.xml +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/29600-29699.xml @@ -1111,7 +1111,7 @@ - + @@ -1136,7 +1136,7 @@ - + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/49400-49499.xml b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/49400-49499.xml index 391a1b4fd6..9aa7cf509d 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/49400-49499.xml +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/stats/items/49400-49499.xml @@ -1366,7 +1366,7 @@ - + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/items.xsd index b1e0459900..fbcd1255d6 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_Classic_2.3_SevenSigns/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_Classic_2.3_SevenSigns/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_Classic_2.3_SevenSigns/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_Classic_2.3_SevenSigns/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/commons/time/AddPattern.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/commons/time/AddPattern.java new file mode 100644 index 0000000000..893a279fd4 --- /dev/null +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/commons/time/AddPattern.java @@ -0,0 +1,119 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class AddPattern implements NextTime +{ + private int _monthInc = -1; + private int _monthSet = -1; + private int _dayOfMonthInc = -1; + private int _dayOfMonthSet = -1; + private int _hourOfDayInc = -1; + private int _hourOfDaySet = -1; + private int _minuteInc = -1; + private int _minuteSet = -1; + + public AddPattern(String pattern) + { + String[] timeparts; + String[] parts = pattern.split("\\s+"); + if (parts.length == 2) + { + String datemodstr; + String datepartsstr = parts[0]; + String[] dateparts = datepartsstr.split(":"); + if (dateparts.length == 2) + { + if (dateparts[0].startsWith("+")) + { + _monthInc = Integer.parseInt(dateparts[0].substring(1)); + } + else + { + _monthSet = Integer.parseInt(dateparts[0]) - 1; + } + } + if ((datemodstr = dateparts[dateparts.length - 1]).startsWith("+")) + { + _dayOfMonthInc = Integer.parseInt(datemodstr.substring(1)); + } + else + { + _dayOfMonthSet = Integer.parseInt(datemodstr); + } + } + if ((timeparts = parts[parts.length - 1].split(":"))[0].startsWith("+")) + { + _hourOfDayInc = Integer.parseInt(timeparts[0].substring(1)); + } + else + { + _hourOfDaySet = Integer.parseInt(timeparts[0]); + } + if (timeparts[1].startsWith("+")) + { + _minuteInc = Integer.parseInt(timeparts[1].substring(1)); + } + else + { + _minuteSet = Integer.parseInt(timeparts[1]); + } + } + + @Override + public long next(long millis) + { + final GregorianCalendar gc = new GregorianCalendar(TimeZone.getDefault()); + gc.setTimeInMillis(millis); + if (_monthInc >= 0) + { + gc.add(2, _monthInc); + } + if (_monthSet >= 0) + { + gc.set(2, _monthSet); + } + if (_dayOfMonthInc >= 0) + { + gc.add(5, _dayOfMonthInc); + } + if (_dayOfMonthSet >= 0) + { + gc.set(5, _dayOfMonthSet); + } + if (_hourOfDayInc >= 0) + { + gc.add(11, _hourOfDayInc); + } + if (_hourOfDaySet >= 0) + { + gc.set(11, _hourOfDaySet); + } + if (_minuteInc >= 0) + { + gc.add(12, _minuteInc); + } + if (_minuteSet >= 0) + { + gc.set(12, _minuteSet); + } + return gc.getTimeInMillis(); + } +} diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/commons/time/NextTime.java similarity index 84% rename from L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java rename to L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/commons/time/NextTime.java index a1db9c20b8..d08d90164d 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/commons/time/NextTime.java @@ -14,11 +14,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.l2jmobius.gameserver.model.eventengine; +package org.l2jmobius.commons.time; -/** - * @author UnAfraid - */ -public interface IEventState +public interface NextTime { + public long next(long var1); } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/commons/time/SchedulingPattern.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/commons/time/SchedulingPattern.java new file mode 100644 index 0000000000..d9fdd655f3 --- /dev/null +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/commons/time/SchedulingPattern.java @@ -0,0 +1,841 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.ArrayList; +import java.util.GregorianCalendar; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.TimeZone; +import java.util.TreeMap; + +import org.l2jmobius.commons.util.Rnd; + +public class SchedulingPattern implements NextTime +{ + private static final int MINUTE_MIN_VALUE = 0; + private static final int MINUTE_MAX_VALUE = 59; + private static final int HOUR_MIN_VALUE = 0; + private static final int HOUR_MAX_VALUE = 23; + private static final int DAY_OF_MONTH_MIN_VALUE = 1; + private static final int DAY_OF_MONTH_MAX_VALUE = 31; + private static final int MONTH_MIN_VALUE = 1; + private static final int MONTH_MAX_VALUE = 12; + private static final int DAY_OF_WEEK_MIN_VALUE = 0; + private static final int DAY_OF_WEEK_MAX_VALUE = 7; + private static final ValueParser MINUTE_VALUE_PARSER = new MinuteValueParser(); + private static final ValueParser HOUR_VALUE_PARSER = new HourValueParser(); + private static final ValueParser DAY_OF_MONTH_VALUE_PARSER = new DayOfMonthValueParser(); + private static final ValueParser MONTH_VALUE_PARSER = new MonthValueParser(); + private static final ValueParser DAY_OF_WEEK_VALUE_PARSER = new DayOfWeekValueParser(); + private final String _asString; + protected List _minuteMatchers = new ArrayList<>(); + protected List _hourMatchers = new ArrayList<>(); + protected List _dayOfMonthMatchers = new ArrayList<>(); + protected List _monthMatchers = new ArrayList<>(); + protected List _dayOfWeekMatchers = new ArrayList<>(); + protected int _matcherSize = 0; + protected Map _hourAdder = new TreeMap<>(); + protected Map _hourAdderRnd = new TreeMap<>(); + protected Map _dayOfYearAdder = new TreeMap<>(); + protected Map _minuteAdderRnd = new TreeMap<>(); + protected Map _weekOfYearAdder = new TreeMap<>(); + + public static boolean validate(String schedulingPattern) + { + try + { + new SchedulingPattern(schedulingPattern); + } + catch (RuntimeException e) + { + return false; + } + return true; + } + + public SchedulingPattern(String pattern) throws RuntimeException + { + _asString = pattern; + StringTokenizer st1 = new StringTokenizer(pattern, "|"); + if (st1.countTokens() < 1) + { + throw new RuntimeException("invalid pattern: \"" + pattern + "\""); + } + + while (st1.hasMoreTokens()) + { + int i; + String localPattern = st1.nextToken(); + StringTokenizer st2 = new StringTokenizer(localPattern, " \t"); + int tokCnt = st2.countTokens(); + if ((tokCnt < 5) || (tokCnt > 6)) + { + throw new RuntimeException("invalid pattern: \"" + localPattern + "\""); + } + + try + { + String minutePattern = st2.nextToken(); + String[] minutePatternParts = minutePattern.split(":"); + if (minutePatternParts.length > 1) + { + for (i = 0; i < (minutePatternParts.length - 1); ++i) + { + if (minutePatternParts[i].length() <= 1) + { + continue; + } + + if (minutePatternParts[i].startsWith("~")) + { + _minuteAdderRnd.put(_matcherSize, Integer.parseInt(minutePatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + minutePatternParts[i] + "\""); + } + minutePattern = minutePatternParts[minutePatternParts.length - 1]; + } + _minuteMatchers.add(buildValueMatcher(minutePattern, MINUTE_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing minutes field: " + e.getMessage() + "."); + } + + try + { + String hourPattern = st2.nextToken(); + String[] hourPatternParts = hourPattern.split(":"); + if (hourPatternParts.length > 1) + { + for (i = 0; i < (hourPatternParts.length - 1); ++i) + { + if (hourPatternParts[i].length() <= 1) + { + continue; + } + + if (hourPatternParts[i].startsWith("+")) + { + _hourAdder.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + if (hourPatternParts[i].startsWith("~")) + { + _hourAdderRnd.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + hourPatternParts[i] + "\""); + } + hourPattern = hourPatternParts[hourPatternParts.length - 1]; + } + _hourMatchers.add(buildValueMatcher(hourPattern, HOUR_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing hours field: " + e.getMessage() + "."); + } + + try + { + String dayOfMonthPattern = st2.nextToken(); + String[] dayOfMonthPatternParts = dayOfMonthPattern.split(":"); + if (dayOfMonthPatternParts.length > 1) + { + for (i = 0; i < (dayOfMonthPatternParts.length - 1); ++i) + { + if (dayOfMonthPatternParts[i].length() <= 1) + { + continue; + } + + if (dayOfMonthPatternParts[i].startsWith("+")) + { + _dayOfYearAdder.put(_matcherSize, Integer.parseInt(dayOfMonthPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown day modifier \"" + dayOfMonthPatternParts[i] + "\""); + } + dayOfMonthPattern = dayOfMonthPatternParts[dayOfMonthPatternParts.length - 1]; + } + _dayOfMonthMatchers.add(buildValueMatcher(dayOfMonthPattern, DAY_OF_MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of month field: " + e.getMessage() + "."); + } + + try + { + _monthMatchers.add(buildValueMatcher(st2.nextToken(), MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing months field: " + e.getMessage() + "."); + } + + try + { + _dayOfWeekMatchers.add(buildValueMatcher(st2.nextToken(), DAY_OF_WEEK_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + + if (st2.hasMoreTokens()) + { + try + { + String weekOfYearAdderText = st2.nextToken(); + if (weekOfYearAdderText.charAt(0) != '+') + { + throw new RuntimeException("Unknown week of year addition in pattern \"" + localPattern + "\"."); + } + weekOfYearAdderText = weekOfYearAdderText.substring(1); + _weekOfYearAdder.put(_matcherSize, Integer.parseInt(weekOfYearAdderText)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + } + ++_matcherSize; + } + } + + private ValueMatcher buildValueMatcher(String str, ValueParser parser) throws Exception + { + if ((str.length() == 1) && str.equals("*")) + { + return new AlwaysTrueValueMatcher(); + } + + ArrayList values = new ArrayList<>(); + StringTokenizer st = new StringTokenizer(str, ","); + while (st.hasMoreTokens()) + { + List local; + String element = st.nextToken(); + try + { + local = parseListElement(element, parser); + } + catch (Exception e) + { + throw new Exception("invalid field \"" + str + "\", invalid element \"" + element + "\", " + e.getMessage()); + } + + for (Integer value : local) + { + if (values.contains(value)) + { + continue; + } + + values.add(value); + } + } + + if (values.size() == 0) + { + throw new Exception("invalid field \"" + str + "\""); + } + + if (parser == DAY_OF_MONTH_VALUE_PARSER) + { + return new DayOfMonthValueMatcher(values); + } + + return new IntArrayValueMatcher(values); + } + + private List parseListElement(String str, ValueParser parser) throws Exception + { + List values; + StringTokenizer st = new StringTokenizer(str, "/"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + try + { + values = parseRange(st.nextToken(), parser); + } + catch (Exception e) + { + throw new Exception("invalid range, " + e.getMessage()); + } + + if (size == 2) + { + int div; + String dStr = st.nextToken(); + + try + { + div = Integer.parseInt(dStr); + } + catch (NumberFormatException e) + { + throw new Exception("invalid divisor \"" + dStr + "\""); + } + + if (div < 1) + { + throw new Exception("non positive divisor \"" + div + "\""); + } + + ArrayList values2 = new ArrayList<>(); + for (int i = 0; i < values.size(); i += div) + { + values2.add(values.get(i)); + } + + return values2; + } + return values; + } + + private List parseRange(String str, ValueParser parser) throws Exception + { + int v2; + int v1; + if (str.equals("*")) + { + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + ArrayList values = new ArrayList<>(); + for (int i = min; i <= max; ++i) + { + values.add(i); + } + return values; + } + + StringTokenizer st = new StringTokenizer(str, "-"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + String v1Str = st.nextToken(); + try + { + v1 = parser.parse(v1Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v1Str + "\", " + e.getMessage()); + } + + if (size == 1) + { + ArrayList values = new ArrayList<>(); + values.add(v1); + return values; + } + + String v2Str = st.nextToken(); + try + { + v2 = parser.parse(v2Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v2Str + "\", " + e.getMessage()); + } + + ArrayList values = new ArrayList<>(); + if (v1 < v2) + { + for (int i = v1; i <= v2; ++i) + { + values.add(i); + } + } + else if (v1 > v2) + { + int i; + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + for (i = v1; i <= max; ++i) + { + values.add(i); + } + for (i = min; i <= v2; ++i) + { + values.add(i); + } + } + else + { + values.add(v1); + } + + return values; + } + + public boolean match(TimeZone timezone, long millis) + { + GregorianCalendar gc = new GregorianCalendar(timezone); + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + for (int i = 0; i < _matcherSize; ++i) + { + boolean eval = false; + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, -_weekOfYearAdder.get(i).intValue()); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, -_dayOfYearAdder.get(i).intValue()); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, -_hourAdder.get(i).intValue()); + } + int minute = gc.get(MONTH_MAX_VALUE); + int hour = gc.get(11); + int dayOfMonth = gc.get(5); + int month = gc.get(2) + 1; + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + int year = gc.get(1); + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + @SuppressWarnings("unused") + boolean bl = minuteMatcher.match(minute) && hourMatcher.match(hour) && (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, gc.isLeapYear(year)) : dayOfMonthMatcher.match(dayOfMonth)) && monthMatcher.match(month) && dayOfWeekMatcher.match(dayOfWeek) ? true : (eval = false); + if (!eval) + { + continue; + } + return true; + } + return false; + } + + public boolean match(long millis) + { + return match(TimeZone.getDefault(), millis); + } + + public long next(TimeZone timezone, long millis) + { + long result = -1L; + GregorianCalendar gc = new GregorianCalendar(timezone); + for (int i = 0; i < _matcherSize; ++i) + { + long next = -1L; + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, _weekOfYearAdder.get(i)); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, _dayOfYearAdder.get(i)); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, _hourAdder.get(i)); + } + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + SEARCH: do + { + int year = gc.get(1); + boolean isLeapYear = gc.isLeapYear(year); + for (int month = gc.get(2) + 1; month <= MONTH_MAX_VALUE; ++month) + { + if (monthMatcher.match(month)) + { + gc.set(2, month - 1); + int maxDayOfMonth = DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + for (int dayOfMonth = gc.get(5); dayOfMonth <= maxDayOfMonth; ++dayOfMonth) + { + if (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, isLeapYear) : dayOfMonthMatcher.match(dayOfMonth)) + { + gc.set(5, dayOfMonth); + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + if (dayOfWeekMatcher.match(dayOfWeek)) + { + for (int hour = gc.get(11); hour <= HOUR_MAX_VALUE; ++hour) + { + if (hourMatcher.match(hour)) + { + gc.set(11, hour); + for (int minute = gc.get(MONTH_MAX_VALUE); minute <= MINUTE_MAX_VALUE; ++minute) + { + if (!minuteMatcher.match(minute)) + { + continue; + } + + gc.set(MONTH_MAX_VALUE, minute); + long next0 = gc.getTimeInMillis(); + if (next0 <= millis) + { + continue; + } + + if ((next != -1L) && (next0 >= next)) + { + break SEARCH; + } + + next = next0; + if (_hourAdderRnd.containsKey(i)) + { + next += Rnd.get(_hourAdderRnd.get(i)) * 60 * 60 * 1000L; + } + + if (!_minuteAdderRnd.containsKey(i)) + { + break SEARCH; + } + + next += Rnd.get(_minuteAdderRnd.get(i)) * 60 * 1000L; + break SEARCH; + } + } + gc.set(MONTH_MAX_VALUE, 0); + } + } + } + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + } + gc.set(5, 1); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + gc.set(2, 0); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + gc.roll(1, true); + } + + while (true); + if ((next <= millis) || ((result != -1L) && (next >= result))) + { + continue; + } + + result = next; + } + return result; + } + + @Override + public long next(long millis) + { + return next(TimeZone.getDefault(), millis); + } + + @Override + public String toString() + { + return _asString; + } + + private static int parseAlias(String value, String[] aliases, int offset) throws Exception + { + for (int i = 0; i < aliases.length; ++i) + { + if (!aliases[i].equalsIgnoreCase(value)) + { + continue; + } + return offset + i; + } + throw new Exception("invalid alias \"" + value + "\""); + } + + private static class DayOfMonthValueMatcher extends IntArrayValueMatcher + { + private static final int[] lastDays = new int[] + { + DAY_OF_MONTH_MAX_VALUE, + 28, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE + }; + + public DayOfMonthValueMatcher(List integers) + { + super(integers); + } + + public boolean match(int value, int month, boolean isLeapYear) + { + return super.match(value) || ((value > 27) && match(32) && DayOfMonthValueMatcher.isLastDayOfMonth(value, month, isLeapYear)); + } + + public static int getLastDayOfMonth(int month, boolean isLeapYear) + { + if (isLeapYear && (month == 2)) + { + return 29; + } + + return lastDays[month - 1]; + } + + public static boolean isLastDayOfMonth(int value, int month, boolean isLeapYear) + { + return value == DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + } + } + + private static class IntArrayValueMatcher implements ValueMatcher + { + private final int[] values; + + public IntArrayValueMatcher(List integers) + { + int size = integers.size(); + values = new int[size]; + for (int i = 0; i < size; ++i) + { + try + { + values[i] = integers.get(i); + continue; + } + catch (Exception e) + { + throw new IllegalArgumentException(e.getMessage()); + } + } + } + + @Override + public boolean match(int value) + { + for (int i = 0; i < values.length; ++i) + { + if (values[i] != value) + { + continue; + } + return true; + } + return false; + } + } + + private static class AlwaysTrueValueMatcher implements ValueMatcher + { + private AlwaysTrueValueMatcher() + { + } + + @Override + public boolean match(int value) + { + return true; + } + } + + private static interface ValueMatcher + { + public boolean match(int var1); + } + + private static class DayOfWeekValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + }; + + public DayOfWeekValueParser() + { + super(DAY_OF_WEEK_MIN_VALUE, DAY_OF_WEEK_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value) % DAY_OF_WEEK_MAX_VALUE; + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 0); + } + } + } + + private static class MonthValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "jan", + "feb", + "mar", + "apr", + "may", + "jun", + "jul", + "aug", + "sep", + "oct", + "nov", + "dec" + }; + + public MonthValueParser() + { + super(MONTH_MIN_VALUE, MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value); + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 1); + } + } + } + + private static class DayOfMonthValueParser extends SimpleValueParser + { + public DayOfMonthValueParser() + { + super(DAY_OF_MONTH_MIN_VALUE, DAY_OF_MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + if (value.equalsIgnoreCase("L")) + { + return 32; + } + return super.parse(value); + } + } + + private static class HourValueParser extends SimpleValueParser + { + public HourValueParser() + { + super(HOUR_MIN_VALUE, HOUR_MAX_VALUE); + } + } + + private static class MinuteValueParser extends SimpleValueParser + { + public MinuteValueParser() + { + super(MINUTE_MIN_VALUE, MINUTE_MAX_VALUE); + } + } + + private static class SimpleValueParser implements ValueParser + { + protected int _minValue; + protected int _maxValue; + + public SimpleValueParser(int minValue, int maxValue) + { + _minValue = minValue; + _maxValue = maxValue; + } + + @Override + public int parse(String value) throws Exception + { + int i; + try + { + i = Integer.parseInt(value); + } + catch (NumberFormatException e) + { + throw new Exception("invalid integer value"); + } + if ((i < _minValue) || (i > _maxValue)) + { + throw new Exception("value out of range"); + } + return i; + } + + @Override + public int getMinValue() + { + return _minValue; + } + + @Override + public int getMaxValue() + { + return _maxValue; + } + } + + private static interface ValueParser + { + public int parse(String var1) throws Exception; + + public int getMinValue(); + + public int getMaxValue(); + } +} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/GameServer.java index 37673a98f7..d0c85bfba4 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/GameServer.java @@ -69,7 +69,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemHPBonusData; import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -391,8 +390,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/Shutdown.java index 585b663269..f222a68ba7 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/Shutdown.java @@ -29,7 +29,6 @@ import org.l2jmobius.gameserver.data.SchemeBufferTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -453,8 +452,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java deleted file mode 100644 index fff7561e47..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosResult -{ - TIE, - WIN, - LOSE -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 946d84e309..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANCE_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); - resetDailyMissionRewards(); resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); + resetDailyMissionRewards(); + resetAttendanceRewards(); resetVip(); - onResetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -86,8 +106,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -105,8 +124,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -153,12 +213,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -281,7 +340,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 4f663f1e96..4835e884e6 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java index 6e632a9712..ca102cad10 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1023,7 +1023,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5070,15 +5070,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Summon.java index be89eb6407..5838b458e6 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index e3decc0989..9d4044e41a 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -131,7 +131,6 @@ import org.l2jmobius.gameserver.instancemanager.RecipeManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -187,7 +186,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -195,7 +193,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -223,7 +220,6 @@ import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -701,10 +697,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -731,7 +723,8 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -2901,11 +2894,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4844,10 +4833,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5008,7 +4993,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5335,7 +5320,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8062,7 +8047,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8123,22 +8108,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return getTeam() != attacker.getTeam(); } // Check if the attacker is a Playable @@ -9306,12 +9282,12 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) + if (_inOlympiadMode) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; return false; } - if (isOnEvent()) // custom event message + if (isOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11108,12 +11084,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -12901,16 +12871,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13009,21 +12969,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13083,13 +13028,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13103,66 +13041,40 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13723,63 +13635,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index a30002000f..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,668 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 3ed2685a6f..94eee3bae6 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERING_FOR_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/events/EventType.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/events/EventType.java index 64db5ebeca..cea88eef7f 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/events/EventType.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/events/EventType.java @@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.model.events; import org.l2jmobius.commons.util.CommonUtil; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttack; @@ -206,9 +205,6 @@ public enum EventType // Olympiad events ON_OLYMPIAD_MATCH_RESULT(OnOlympiadMatchResult.class, void.class), - // Ceremony of Chaos events - ON_CEREMONY_OF_CHAOS_MATCH_RESULT(OnCeremonyOfChaosMatchResult.class, void.class), - // Playable events ON_PLAYABLE_EXP_CHANGED(OnPlayableExpChanged.class, void.class, TerminateReturn.class), diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java deleted file mode 100644 index fb0f2bb3da..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; - -import java.util.List; - -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; - -/** - * @author UnAfraid - */ -public class OnCeremonyOfChaosMatchResult implements IBaseEvent -{ - private final List _winners; - private final List _members; - - public OnCeremonyOfChaosMatchResult(List winners, List members) - { - _winners = winners; - _members = members; - } - - public List getWinners() - { - return _winners; - } - - public List getMembers() - { - return _members; - } - - @Override - public EventType getType() - { - return EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 197a15f962..9cadbc687e 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANCE_ZONE); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/Item.java index 6de5a49241..0b301e82b3 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -149,7 +148,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -224,7 +223,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -867,9 +866,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -944,11 +943,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 3ff447bc23..ba7652e83c 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index b65afbc37b..7dd3e39882 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java index eefd47d443..deffc11dca 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java @@ -37,9 +37,6 @@ import org.l2jmobius.gameserver.network.clientpackets.attendance.RequestVipAtten import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestChangeAttributeCancel; import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestChangeAttributeItem; import org.l2jmobius.gameserver.network.clientpackets.attributechange.SendChangeAttributeTargetItem; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCancelCuriousHouse; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCuriousHouseHtml; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestJoinCuriousHouse; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyInfo; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyItem; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionCancel; @@ -290,13 +287,13 @@ public enum ExIncomingPackets implements IIncomingPackets REQUEST_MENTEE_WAITING_LIST(0xB8, RequestMenteeWaitingList::new, ConnectionState.IN_GAME), REQUEST_CLAN_ASK_JOIN_BY_NAME(0xB9, RequestClanAskJoinByName::new, ConnectionState.IN_GAME), REQUEST_IN_ZONE_WAITING_TIME(0xBA, RequestInzoneWaitingTime::new, ConnectionState.IN_GAME), - REQUEST_JOIN_CURIOUS_HOUSE(0xBB, RequestJoinCuriousHouse::new, ConnectionState.IN_GAME), - REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, RequestCancelCuriousHouse::new, ConnectionState.IN_GAME), + REQUEST_JOIN_CURIOUS_HOUSE(0xBB, null, ConnectionState.IN_GAME), + REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, null, ConnectionState.IN_GAME), REQUEST_LEAVE_CURIOUS_HOUSE(0xBD, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_LIST_CURIOUS_HOUSE(0xBE, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_CURIOUS_HOUSE(0xBF, null, ConnectionState.IN_GAME), REQUEST_LEAVE_OBSERVING_CURIOUS_HOUSE(0xC0, null, ConnectionState.IN_GAME), - REQUEST_CURIOUS_HOUSE_HTML(0xC1, RequestCuriousHouseHtml::new, ConnectionState.IN_GAME), + REQUEST_CURIOUS_HOUSE_HTML(0xC1, null, ConnectionState.IN_GAME), REQUEST_CURIOUS_HOUSE_RECORD(0xC2, null, ConnectionState.IN_GAME), EX_SYSSTRING(0xC3, null, ConnectionState.IN_GAME), REQUEST_EX_TRY_TO_PUT_SHAPE_SHIFTING_TARGET_ITEM(0xC4, RequestExTryToPutShapeShiftingTargetItem::new, ConnectionState.IN_GAME), diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 94271b4d12..7fed0609c3 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -44,7 +44,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -428,11 +427,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index b0676e562d..c2cb56b495 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java deleted file mode 100644 index ce871f6a18..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestCancelCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java deleted file mode 100644 index a4e6f04627..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Sdw - */ -public class RequestCuriousHouseHtml implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java deleted file mode 100644 index f0c221d875..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestJoinCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index dba86b67fe..c4905c2f5d 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -265,7 +261,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java deleted file mode 100644 index 372432ef02..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseEnter implements IClientOutgoingPacket -{ - public static final ExCuriousHouseEnter STATIC_PACKET = new ExCuriousHouseEnter(); - - private ExCuriousHouseEnter() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_ENTER.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java deleted file mode 100644 index 50e1e74725..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseLeave implements IClientOutgoingPacket -{ - public static final ExCuriousHouseLeave STATIC_PACKET = new ExCuriousHouseLeave(); - - private ExCuriousHouseLeave() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_LEAVE.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java deleted file mode 100644 index d26eee8d89..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import java.util.Collection; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseMemberList implements IClientOutgoingPacket -{ - private final int _id; - private final int _maxPlayers; - private final Collection _players; - - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) - { - _id = id; - _maxPlayers = maxPlayers; - _players = players; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_MEMBER_LIST.writeId(packet); - - packet.writeD(_id); - packet.writeD(_maxPlayers); - packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) - { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } - } - return true; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java deleted file mode 100644 index 14dca9be4a..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseObserveMode implements IClientOutgoingPacket -{ - public static final ExCuriousHouseObserveMode STATIC_ENABLED = new ExCuriousHouseObserveMode(0); - public static final ExCuriousHouseObserveMode STATIC_DISABLED = new ExCuriousHouseObserveMode(1); - - private final int _spectating; - - private ExCuriousHouseObserveMode(int spectating) - { - _spectating = spectating; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_OBSERVE_MODE.writeId(packet); - packet.writeC(_spectating); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java deleted file mode 100644 index b71caa5f14..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseRemainTime implements IClientOutgoingPacket -{ - private final int _time; - - public ExCuriousHouseRemainTime(int time) - { - _time = time; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_REMAIN_TIME.writeId(packet); - packet.writeD(_time); - - return true; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java deleted file mode 100644 index 1f09c4de0d..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseResult implements IClientOutgoingPacket -{ - private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; - - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) - { - _result = result; - _event = event; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); - packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> - { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java deleted file mode 100644 index abf627ab72..0000000000 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseState implements IClientOutgoingPacket -{ - public static final ExCuriousHouseState IDLE_PACKET = new ExCuriousHouseState(0); - public static final ExCuriousHouseState REGISTRATION_PACKET = new ExCuriousHouseState(1); - public static final ExCuriousHouseState PREPARE_PACKET = new ExCuriousHouseState(2); - public static final ExCuriousHouseState STARTING_PACKET = new ExCuriousHouseState(3); - - private final int _state; - - public ExCuriousHouseState(int state) - { - _state = state; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_STATE.writeId(packet); - packet.writeD(_state); - return true; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java index 2ee70b560d..5e4c984dac 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java @@ -19,9 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets.dailymission; import java.time.LocalDate; import java.util.Collection; import java.util.Collections; -import java.util.function.Function; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; @@ -29,28 +29,28 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import it.sauronsoftware.cron4j.Predictor; - /** * @author Sdw */ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket { - final PlayerInstance _player; - private final Collection _rewards; - private static final Function _remainTime = pattern -> (new Predictor(pattern).nextMatchingTime() - Chronos.currentTimeMillis()) / 1000; + private static final SchedulingPattern DAILY_REUSE_PATTERN = new SchedulingPattern("30 6 * * *"); + private static final SchedulingPattern WEEKLY_REUSE_PATTERN = new SchedulingPattern("30 6 * * 1"); + private static final SchedulingPattern MONTHLY_REUSE_PATTERN = new SchedulingPattern("30 6 1 * *"); - private final long _dayRemainTime; - private final long _weekRemainTime; - private final long _monthRemainTime; + private final PlayerInstance _player; + private final Collection _rewards; + private final int _dayRemainTime; + private final int _weekRemainTime; + private final int _monthRemainTime; public ExOneDayReceiveRewardList(PlayerInstance player, boolean sendRewards) { _player = player; _rewards = sendRewards ? DailyMissionData.getInstance().getDailyMissionData(player) : Collections.emptyList(); - _dayRemainTime = _remainTime.apply("30 6 * * *"); - _weekRemainTime = _remainTime.apply("30 6 * * 1"); - _monthRemainTime = _remainTime.apply("30 6 1 * *"); + _dayRemainTime = (int) ((DAILY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _weekRemainTime = (int) ((WEEKLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _monthRemainTime = (int) ((MONTHLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); } @Override @@ -63,9 +63,9 @@ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket OutgoingPackets.EX_ONE_DAY_RECEIVE_REWARD_LIST.writeId(packet); - packet.writeD((int) _dayRemainTime); - packet.writeD((int) _weekRemainTime); - packet.writeD((int) _monthRemainTime); + packet.writeD(_dayRemainTime); + packet.writeD(_weekRemainTime); + packet.writeD(_monthRemainTime); packet.writeC(0x17); packet.writeD(_player.getClassId().getId()); packet.writeD(LocalDate.now().getDayOfWeek().ordinal()); // Day of week diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/.classpath b/L2J_Mobius_Classic_2.4_SecretOfEmpire/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/.classpath +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/AdminCommands.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index ffdf9cca5f..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/Elpies.txt b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/Rabbits.txt b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/Race.txt b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 0eab305e47..7e2e26e629 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -156,7 +156,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -191,7 +191,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -249,7 +249,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -299,7 +299,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 992cd26fed..efb6423d4d 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -151,7 +151,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -176,13 +176,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -229,7 +229,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -266,6 +266,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -456,7 +457,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -483,7 +484,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -536,7 +537,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -583,7 +584,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -610,7 +611,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -641,7 +642,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -728,7 +729,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -780,7 +781,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -885,7 +886,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java index 5739f9ce23..fcedb44015 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java @@ -21,7 +21,6 @@ import java.util.logging.Logger; import org.l2jmobius.gameserver.handler.DailyMissionHandler; import handlers.dailymissionhandlers.BossDailyMissionHandler; -import handlers.dailymissionhandlers.CeremonyOfChaosDailyMissionHandler; import handlers.dailymissionhandlers.FishingDailyMissionHandler; import handlers.dailymissionhandlers.LevelDailyMissionHandler; import handlers.dailymissionhandlers.LoginMonthDailyMissionHandler; @@ -47,7 +46,6 @@ public class DailyMissionMasterHandler DailyMissionHandler.getInstance().registerHandler("quest", QuestDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("olympiad", OlympiadDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("siege", SiegeDailyMissionHandler::new); - DailyMissionHandler.getInstance().registerHandler("ceremonyofchaos", CeremonyOfChaosDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("boss", BossDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("monster", MonsterDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("fishing", FishingDailyMissionHandler::new); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/MasterHandler.java index 47d4aa8e81..007205ba0a 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -143,7 +142,6 @@ import handlers.bypasshandlers.Buy; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -414,7 +412,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -483,7 +480,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java deleted file mode 100644 index d03e8e82f6..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.dailymissionhandlers; - -import org.l2jmobius.gameserver.enums.DailyMissionStatus; -import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler; -import org.l2jmobius.gameserver.model.DailyMissionDataHolder; -import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.Containers; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosDailyMissionHandler extends AbstractDailyMissionHandler -{ - private final int _amount; - - public CeremonyOfChaosDailyMissionHandler(DailyMissionDataHolder holder) - { - super(holder); - _amount = holder.getRequiredCompletions(); - } - - @Override - public void init() - { - Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT, (OnCeremonyOfChaosMatchResult event) -> onCeremonyOfChaosMatchResult(event), this)); - } - - @Override - public boolean isAvailable(PlayerInstance player) - { - final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); - if (entry != null) - { - switch (entry.getStatus()) - { - case NOT_AVAILABLE: // Initial state - { - if (entry.getProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - storePlayerEntry(entry); - } - break; - } - case AVAILABLE: - { - return true; - } - } - } - return false; - } - - private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) - { - event.getMembers().forEach(member -> - { - final DailyMissionPlayerEntry entry = getPlayerEntry(member.getObjectId(), true); - if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE) - { - if (entry.increaseProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - } - storePlayerEntry(entry); - } - }); - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/01000-01099.xml index f84b0c412b..2f6a33a4c4 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/01000-01099.xml @@ -623,7 +623,7 @@ - + @@ -646,7 +646,7 @@ - + @@ -740,7 +740,7 @@ - + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/01500-01599.xml index 410fa52a73..c9b2196127 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/05200-05299.xml index 8a0727ebaa..fa9c409200 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/05200-05299.xml @@ -313,7 +313,7 @@ - + @@ -334,7 +334,7 @@ - + @@ -355,7 +355,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -397,7 +397,7 @@ - + @@ -418,7 +418,7 @@ - + @@ -439,7 +439,7 @@ - + @@ -460,7 +460,7 @@ - + @@ -481,7 +481,7 @@ - + @@ -502,7 +502,7 @@ - + @@ -523,7 +523,7 @@ - + @@ -544,7 +544,7 @@ - + @@ -565,7 +565,7 @@ - + @@ -586,7 +586,7 @@ - + @@ -607,7 +607,7 @@ - + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/05500-05599.xml index a4cfa0c743..d6aa6ce3d5 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/05500-05599.xml @@ -736,7 +736,7 @@ - + @@ -755,7 +755,7 @@ - + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/06400-06499.xml index e3e9ef44ba..15660e58ee 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/29600-29699.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/29600-29699.xml index 6222f5d4a8..ae317067fe 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/29600-29699.xml +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/29600-29699.xml @@ -1111,7 +1111,7 @@ - + @@ -1136,7 +1136,7 @@ - + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/49400-49499.xml b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/49400-49499.xml index 391a1b4fd6..9aa7cf509d 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/49400-49499.xml +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/stats/items/49400-49499.xml @@ -1366,7 +1366,7 @@ - + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/items.xsd index b1e0459900..fbcd1255d6 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/commons/time/AddPattern.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/commons/time/AddPattern.java new file mode 100644 index 0000000000..893a279fd4 --- /dev/null +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/commons/time/AddPattern.java @@ -0,0 +1,119 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class AddPattern implements NextTime +{ + private int _monthInc = -1; + private int _monthSet = -1; + private int _dayOfMonthInc = -1; + private int _dayOfMonthSet = -1; + private int _hourOfDayInc = -1; + private int _hourOfDaySet = -1; + private int _minuteInc = -1; + private int _minuteSet = -1; + + public AddPattern(String pattern) + { + String[] timeparts; + String[] parts = pattern.split("\\s+"); + if (parts.length == 2) + { + String datemodstr; + String datepartsstr = parts[0]; + String[] dateparts = datepartsstr.split(":"); + if (dateparts.length == 2) + { + if (dateparts[0].startsWith("+")) + { + _monthInc = Integer.parseInt(dateparts[0].substring(1)); + } + else + { + _monthSet = Integer.parseInt(dateparts[0]) - 1; + } + } + if ((datemodstr = dateparts[dateparts.length - 1]).startsWith("+")) + { + _dayOfMonthInc = Integer.parseInt(datemodstr.substring(1)); + } + else + { + _dayOfMonthSet = Integer.parseInt(datemodstr); + } + } + if ((timeparts = parts[parts.length - 1].split(":"))[0].startsWith("+")) + { + _hourOfDayInc = Integer.parseInt(timeparts[0].substring(1)); + } + else + { + _hourOfDaySet = Integer.parseInt(timeparts[0]); + } + if (timeparts[1].startsWith("+")) + { + _minuteInc = Integer.parseInt(timeparts[1].substring(1)); + } + else + { + _minuteSet = Integer.parseInt(timeparts[1]); + } + } + + @Override + public long next(long millis) + { + final GregorianCalendar gc = new GregorianCalendar(TimeZone.getDefault()); + gc.setTimeInMillis(millis); + if (_monthInc >= 0) + { + gc.add(2, _monthInc); + } + if (_monthSet >= 0) + { + gc.set(2, _monthSet); + } + if (_dayOfMonthInc >= 0) + { + gc.add(5, _dayOfMonthInc); + } + if (_dayOfMonthSet >= 0) + { + gc.set(5, _dayOfMonthSet); + } + if (_hourOfDayInc >= 0) + { + gc.add(11, _hourOfDayInc); + } + if (_hourOfDaySet >= 0) + { + gc.set(11, _hourOfDaySet); + } + if (_minuteInc >= 0) + { + gc.add(12, _minuteInc); + } + if (_minuteSet >= 0) + { + gc.set(12, _minuteSet); + } + return gc.getTimeInMillis(); + } +} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/commons/time/NextTime.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/commons/time/NextTime.java new file mode 100644 index 0000000000..d08d90164d --- /dev/null +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/commons/time/NextTime.java @@ -0,0 +1,22 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +public interface NextTime +{ + public long next(long var1); +} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/commons/time/SchedulingPattern.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/commons/time/SchedulingPattern.java new file mode 100644 index 0000000000..d9fdd655f3 --- /dev/null +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/commons/time/SchedulingPattern.java @@ -0,0 +1,841 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.ArrayList; +import java.util.GregorianCalendar; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.TimeZone; +import java.util.TreeMap; + +import org.l2jmobius.commons.util.Rnd; + +public class SchedulingPattern implements NextTime +{ + private static final int MINUTE_MIN_VALUE = 0; + private static final int MINUTE_MAX_VALUE = 59; + private static final int HOUR_MIN_VALUE = 0; + private static final int HOUR_MAX_VALUE = 23; + private static final int DAY_OF_MONTH_MIN_VALUE = 1; + private static final int DAY_OF_MONTH_MAX_VALUE = 31; + private static final int MONTH_MIN_VALUE = 1; + private static final int MONTH_MAX_VALUE = 12; + private static final int DAY_OF_WEEK_MIN_VALUE = 0; + private static final int DAY_OF_WEEK_MAX_VALUE = 7; + private static final ValueParser MINUTE_VALUE_PARSER = new MinuteValueParser(); + private static final ValueParser HOUR_VALUE_PARSER = new HourValueParser(); + private static final ValueParser DAY_OF_MONTH_VALUE_PARSER = new DayOfMonthValueParser(); + private static final ValueParser MONTH_VALUE_PARSER = new MonthValueParser(); + private static final ValueParser DAY_OF_WEEK_VALUE_PARSER = new DayOfWeekValueParser(); + private final String _asString; + protected List _minuteMatchers = new ArrayList<>(); + protected List _hourMatchers = new ArrayList<>(); + protected List _dayOfMonthMatchers = new ArrayList<>(); + protected List _monthMatchers = new ArrayList<>(); + protected List _dayOfWeekMatchers = new ArrayList<>(); + protected int _matcherSize = 0; + protected Map _hourAdder = new TreeMap<>(); + protected Map _hourAdderRnd = new TreeMap<>(); + protected Map _dayOfYearAdder = new TreeMap<>(); + protected Map _minuteAdderRnd = new TreeMap<>(); + protected Map _weekOfYearAdder = new TreeMap<>(); + + public static boolean validate(String schedulingPattern) + { + try + { + new SchedulingPattern(schedulingPattern); + } + catch (RuntimeException e) + { + return false; + } + return true; + } + + public SchedulingPattern(String pattern) throws RuntimeException + { + _asString = pattern; + StringTokenizer st1 = new StringTokenizer(pattern, "|"); + if (st1.countTokens() < 1) + { + throw new RuntimeException("invalid pattern: \"" + pattern + "\""); + } + + while (st1.hasMoreTokens()) + { + int i; + String localPattern = st1.nextToken(); + StringTokenizer st2 = new StringTokenizer(localPattern, " \t"); + int tokCnt = st2.countTokens(); + if ((tokCnt < 5) || (tokCnt > 6)) + { + throw new RuntimeException("invalid pattern: \"" + localPattern + "\""); + } + + try + { + String minutePattern = st2.nextToken(); + String[] minutePatternParts = minutePattern.split(":"); + if (minutePatternParts.length > 1) + { + for (i = 0; i < (minutePatternParts.length - 1); ++i) + { + if (minutePatternParts[i].length() <= 1) + { + continue; + } + + if (minutePatternParts[i].startsWith("~")) + { + _minuteAdderRnd.put(_matcherSize, Integer.parseInt(minutePatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + minutePatternParts[i] + "\""); + } + minutePattern = minutePatternParts[minutePatternParts.length - 1]; + } + _minuteMatchers.add(buildValueMatcher(minutePattern, MINUTE_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing minutes field: " + e.getMessage() + "."); + } + + try + { + String hourPattern = st2.nextToken(); + String[] hourPatternParts = hourPattern.split(":"); + if (hourPatternParts.length > 1) + { + for (i = 0; i < (hourPatternParts.length - 1); ++i) + { + if (hourPatternParts[i].length() <= 1) + { + continue; + } + + if (hourPatternParts[i].startsWith("+")) + { + _hourAdder.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + if (hourPatternParts[i].startsWith("~")) + { + _hourAdderRnd.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + hourPatternParts[i] + "\""); + } + hourPattern = hourPatternParts[hourPatternParts.length - 1]; + } + _hourMatchers.add(buildValueMatcher(hourPattern, HOUR_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing hours field: " + e.getMessage() + "."); + } + + try + { + String dayOfMonthPattern = st2.nextToken(); + String[] dayOfMonthPatternParts = dayOfMonthPattern.split(":"); + if (dayOfMonthPatternParts.length > 1) + { + for (i = 0; i < (dayOfMonthPatternParts.length - 1); ++i) + { + if (dayOfMonthPatternParts[i].length() <= 1) + { + continue; + } + + if (dayOfMonthPatternParts[i].startsWith("+")) + { + _dayOfYearAdder.put(_matcherSize, Integer.parseInt(dayOfMonthPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown day modifier \"" + dayOfMonthPatternParts[i] + "\""); + } + dayOfMonthPattern = dayOfMonthPatternParts[dayOfMonthPatternParts.length - 1]; + } + _dayOfMonthMatchers.add(buildValueMatcher(dayOfMonthPattern, DAY_OF_MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of month field: " + e.getMessage() + "."); + } + + try + { + _monthMatchers.add(buildValueMatcher(st2.nextToken(), MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing months field: " + e.getMessage() + "."); + } + + try + { + _dayOfWeekMatchers.add(buildValueMatcher(st2.nextToken(), DAY_OF_WEEK_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + + if (st2.hasMoreTokens()) + { + try + { + String weekOfYearAdderText = st2.nextToken(); + if (weekOfYearAdderText.charAt(0) != '+') + { + throw new RuntimeException("Unknown week of year addition in pattern \"" + localPattern + "\"."); + } + weekOfYearAdderText = weekOfYearAdderText.substring(1); + _weekOfYearAdder.put(_matcherSize, Integer.parseInt(weekOfYearAdderText)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + } + ++_matcherSize; + } + } + + private ValueMatcher buildValueMatcher(String str, ValueParser parser) throws Exception + { + if ((str.length() == 1) && str.equals("*")) + { + return new AlwaysTrueValueMatcher(); + } + + ArrayList values = new ArrayList<>(); + StringTokenizer st = new StringTokenizer(str, ","); + while (st.hasMoreTokens()) + { + List local; + String element = st.nextToken(); + try + { + local = parseListElement(element, parser); + } + catch (Exception e) + { + throw new Exception("invalid field \"" + str + "\", invalid element \"" + element + "\", " + e.getMessage()); + } + + for (Integer value : local) + { + if (values.contains(value)) + { + continue; + } + + values.add(value); + } + } + + if (values.size() == 0) + { + throw new Exception("invalid field \"" + str + "\""); + } + + if (parser == DAY_OF_MONTH_VALUE_PARSER) + { + return new DayOfMonthValueMatcher(values); + } + + return new IntArrayValueMatcher(values); + } + + private List parseListElement(String str, ValueParser parser) throws Exception + { + List values; + StringTokenizer st = new StringTokenizer(str, "/"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + try + { + values = parseRange(st.nextToken(), parser); + } + catch (Exception e) + { + throw new Exception("invalid range, " + e.getMessage()); + } + + if (size == 2) + { + int div; + String dStr = st.nextToken(); + + try + { + div = Integer.parseInt(dStr); + } + catch (NumberFormatException e) + { + throw new Exception("invalid divisor \"" + dStr + "\""); + } + + if (div < 1) + { + throw new Exception("non positive divisor \"" + div + "\""); + } + + ArrayList values2 = new ArrayList<>(); + for (int i = 0; i < values.size(); i += div) + { + values2.add(values.get(i)); + } + + return values2; + } + return values; + } + + private List parseRange(String str, ValueParser parser) throws Exception + { + int v2; + int v1; + if (str.equals("*")) + { + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + ArrayList values = new ArrayList<>(); + for (int i = min; i <= max; ++i) + { + values.add(i); + } + return values; + } + + StringTokenizer st = new StringTokenizer(str, "-"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + String v1Str = st.nextToken(); + try + { + v1 = parser.parse(v1Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v1Str + "\", " + e.getMessage()); + } + + if (size == 1) + { + ArrayList values = new ArrayList<>(); + values.add(v1); + return values; + } + + String v2Str = st.nextToken(); + try + { + v2 = parser.parse(v2Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v2Str + "\", " + e.getMessage()); + } + + ArrayList values = new ArrayList<>(); + if (v1 < v2) + { + for (int i = v1; i <= v2; ++i) + { + values.add(i); + } + } + else if (v1 > v2) + { + int i; + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + for (i = v1; i <= max; ++i) + { + values.add(i); + } + for (i = min; i <= v2; ++i) + { + values.add(i); + } + } + else + { + values.add(v1); + } + + return values; + } + + public boolean match(TimeZone timezone, long millis) + { + GregorianCalendar gc = new GregorianCalendar(timezone); + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + for (int i = 0; i < _matcherSize; ++i) + { + boolean eval = false; + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, -_weekOfYearAdder.get(i).intValue()); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, -_dayOfYearAdder.get(i).intValue()); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, -_hourAdder.get(i).intValue()); + } + int minute = gc.get(MONTH_MAX_VALUE); + int hour = gc.get(11); + int dayOfMonth = gc.get(5); + int month = gc.get(2) + 1; + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + int year = gc.get(1); + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + @SuppressWarnings("unused") + boolean bl = minuteMatcher.match(minute) && hourMatcher.match(hour) && (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, gc.isLeapYear(year)) : dayOfMonthMatcher.match(dayOfMonth)) && monthMatcher.match(month) && dayOfWeekMatcher.match(dayOfWeek) ? true : (eval = false); + if (!eval) + { + continue; + } + return true; + } + return false; + } + + public boolean match(long millis) + { + return match(TimeZone.getDefault(), millis); + } + + public long next(TimeZone timezone, long millis) + { + long result = -1L; + GregorianCalendar gc = new GregorianCalendar(timezone); + for (int i = 0; i < _matcherSize; ++i) + { + long next = -1L; + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, _weekOfYearAdder.get(i)); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, _dayOfYearAdder.get(i)); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, _hourAdder.get(i)); + } + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + SEARCH: do + { + int year = gc.get(1); + boolean isLeapYear = gc.isLeapYear(year); + for (int month = gc.get(2) + 1; month <= MONTH_MAX_VALUE; ++month) + { + if (monthMatcher.match(month)) + { + gc.set(2, month - 1); + int maxDayOfMonth = DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + for (int dayOfMonth = gc.get(5); dayOfMonth <= maxDayOfMonth; ++dayOfMonth) + { + if (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, isLeapYear) : dayOfMonthMatcher.match(dayOfMonth)) + { + gc.set(5, dayOfMonth); + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + if (dayOfWeekMatcher.match(dayOfWeek)) + { + for (int hour = gc.get(11); hour <= HOUR_MAX_VALUE; ++hour) + { + if (hourMatcher.match(hour)) + { + gc.set(11, hour); + for (int minute = gc.get(MONTH_MAX_VALUE); minute <= MINUTE_MAX_VALUE; ++minute) + { + if (!minuteMatcher.match(minute)) + { + continue; + } + + gc.set(MONTH_MAX_VALUE, minute); + long next0 = gc.getTimeInMillis(); + if (next0 <= millis) + { + continue; + } + + if ((next != -1L) && (next0 >= next)) + { + break SEARCH; + } + + next = next0; + if (_hourAdderRnd.containsKey(i)) + { + next += Rnd.get(_hourAdderRnd.get(i)) * 60 * 60 * 1000L; + } + + if (!_minuteAdderRnd.containsKey(i)) + { + break SEARCH; + } + + next += Rnd.get(_minuteAdderRnd.get(i)) * 60 * 1000L; + break SEARCH; + } + } + gc.set(MONTH_MAX_VALUE, 0); + } + } + } + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + } + gc.set(5, 1); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + gc.set(2, 0); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + gc.roll(1, true); + } + + while (true); + if ((next <= millis) || ((result != -1L) && (next >= result))) + { + continue; + } + + result = next; + } + return result; + } + + @Override + public long next(long millis) + { + return next(TimeZone.getDefault(), millis); + } + + @Override + public String toString() + { + return _asString; + } + + private static int parseAlias(String value, String[] aliases, int offset) throws Exception + { + for (int i = 0; i < aliases.length; ++i) + { + if (!aliases[i].equalsIgnoreCase(value)) + { + continue; + } + return offset + i; + } + throw new Exception("invalid alias \"" + value + "\""); + } + + private static class DayOfMonthValueMatcher extends IntArrayValueMatcher + { + private static final int[] lastDays = new int[] + { + DAY_OF_MONTH_MAX_VALUE, + 28, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE + }; + + public DayOfMonthValueMatcher(List integers) + { + super(integers); + } + + public boolean match(int value, int month, boolean isLeapYear) + { + return super.match(value) || ((value > 27) && match(32) && DayOfMonthValueMatcher.isLastDayOfMonth(value, month, isLeapYear)); + } + + public static int getLastDayOfMonth(int month, boolean isLeapYear) + { + if (isLeapYear && (month == 2)) + { + return 29; + } + + return lastDays[month - 1]; + } + + public static boolean isLastDayOfMonth(int value, int month, boolean isLeapYear) + { + return value == DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + } + } + + private static class IntArrayValueMatcher implements ValueMatcher + { + private final int[] values; + + public IntArrayValueMatcher(List integers) + { + int size = integers.size(); + values = new int[size]; + for (int i = 0; i < size; ++i) + { + try + { + values[i] = integers.get(i); + continue; + } + catch (Exception e) + { + throw new IllegalArgumentException(e.getMessage()); + } + } + } + + @Override + public boolean match(int value) + { + for (int i = 0; i < values.length; ++i) + { + if (values[i] != value) + { + continue; + } + return true; + } + return false; + } + } + + private static class AlwaysTrueValueMatcher implements ValueMatcher + { + private AlwaysTrueValueMatcher() + { + } + + @Override + public boolean match(int value) + { + return true; + } + } + + private static interface ValueMatcher + { + public boolean match(int var1); + } + + private static class DayOfWeekValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + }; + + public DayOfWeekValueParser() + { + super(DAY_OF_WEEK_MIN_VALUE, DAY_OF_WEEK_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value) % DAY_OF_WEEK_MAX_VALUE; + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 0); + } + } + } + + private static class MonthValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "jan", + "feb", + "mar", + "apr", + "may", + "jun", + "jul", + "aug", + "sep", + "oct", + "nov", + "dec" + }; + + public MonthValueParser() + { + super(MONTH_MIN_VALUE, MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value); + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 1); + } + } + } + + private static class DayOfMonthValueParser extends SimpleValueParser + { + public DayOfMonthValueParser() + { + super(DAY_OF_MONTH_MIN_VALUE, DAY_OF_MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + if (value.equalsIgnoreCase("L")) + { + return 32; + } + return super.parse(value); + } + } + + private static class HourValueParser extends SimpleValueParser + { + public HourValueParser() + { + super(HOUR_MIN_VALUE, HOUR_MAX_VALUE); + } + } + + private static class MinuteValueParser extends SimpleValueParser + { + public MinuteValueParser() + { + super(MINUTE_MIN_VALUE, MINUTE_MAX_VALUE); + } + } + + private static class SimpleValueParser implements ValueParser + { + protected int _minValue; + protected int _maxValue; + + public SimpleValueParser(int minValue, int maxValue) + { + _minValue = minValue; + _maxValue = maxValue; + } + + @Override + public int parse(String value) throws Exception + { + int i; + try + { + i = Integer.parseInt(value); + } + catch (NumberFormatException e) + { + throw new Exception("invalid integer value"); + } + if ((i < _minValue) || (i > _maxValue)) + { + throw new Exception("value out of range"); + } + return i; + } + + @Override + public int getMinValue() + { + return _minValue; + } + + @Override + public int getMaxValue() + { + return _maxValue; + } + } + + private static interface ValueParser + { + public int parse(String var1) throws Exception; + + public int getMinValue(); + + public int getMaxValue(); + } +} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/GameServer.java index ee03be7554..194b5e165c 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/GameServer.java @@ -70,7 +70,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; import org.l2jmobius.gameserver.data.xml.EquipmentUpgradeData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -393,8 +392,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/Shutdown.java index 585b663269..f222a68ba7 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/Shutdown.java @@ -29,7 +29,6 @@ import org.l2jmobius.gameserver.data.SchemeBufferTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -453,8 +452,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java deleted file mode 100644 index fff7561e47..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosResult -{ - TIE, - WIN, - LOSE -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 946d84e309..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANCE_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); - resetDailyMissionRewards(); resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); + resetDailyMissionRewards(); + resetAttendanceRewards(); resetVip(); - onResetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -86,8 +106,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -105,8 +124,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -153,12 +213,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -281,7 +340,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 4f663f1e96..4835e884e6 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java index 6e632a9712..ca102cad10 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1023,7 +1023,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5070,15 +5070,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Summon.java index be89eb6407..5838b458e6 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 6e4392214c..1b671f7446 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -131,7 +131,6 @@ import org.l2jmobius.gameserver.instancemanager.RecipeManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -187,7 +186,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -195,7 +193,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -223,7 +220,6 @@ import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -701,10 +697,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -731,7 +723,8 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -2901,11 +2894,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4844,10 +4833,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5008,7 +4993,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5335,7 +5320,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8062,7 +8047,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8123,22 +8108,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return getTeam() != attacker.getTeam(); } // Check if the attacker is a Playable @@ -9306,12 +9282,12 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) + if (_inOlympiadMode) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; return false; } - if (isOnEvent()) // custom event message + if (isOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11108,12 +11084,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -12901,16 +12871,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13009,21 +12969,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13083,13 +13028,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13103,66 +13041,40 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13723,63 +13635,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index a30002000f..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,668 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 3ed2685a6f..94eee3bae6 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERING_FOR_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/events/EventType.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/events/EventType.java index 64db5ebeca..cea88eef7f 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/events/EventType.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/events/EventType.java @@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.model.events; import org.l2jmobius.commons.util.CommonUtil; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttack; @@ -206,9 +205,6 @@ public enum EventType // Olympiad events ON_OLYMPIAD_MATCH_RESULT(OnOlympiadMatchResult.class, void.class), - // Ceremony of Chaos events - ON_CEREMONY_OF_CHAOS_MATCH_RESULT(OnCeremonyOfChaosMatchResult.class, void.class), - // Playable events ON_PLAYABLE_EXP_CHANGED(OnPlayableExpChanged.class, void.class, TerminateReturn.class), diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java deleted file mode 100644 index fb0f2bb3da..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; - -import java.util.List; - -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; - -/** - * @author UnAfraid - */ -public class OnCeremonyOfChaosMatchResult implements IBaseEvent -{ - private final List _winners; - private final List _members; - - public OnCeremonyOfChaosMatchResult(List winners, List members) - { - _winners = winners; - _members = members; - } - - public List getWinners() - { - return _winners; - } - - public List getMembers() - { - return _members; - } - - @Override - public EventType getType() - { - return EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 197a15f962..9cadbc687e 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANCE_ZONE); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/Item.java index 6de5a49241..0b301e82b3 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -149,7 +148,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -224,7 +223,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -867,9 +866,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -944,11 +943,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 3ff447bc23..ba7652e83c 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index b65afbc37b..7dd3e39882 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java index a1d577a435..02232ed0cb 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java @@ -37,9 +37,6 @@ import org.l2jmobius.gameserver.network.clientpackets.attendance.RequestVipAtten import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestChangeAttributeCancel; import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestChangeAttributeItem; import org.l2jmobius.gameserver.network.clientpackets.attributechange.SendChangeAttributeTargetItem; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCancelCuriousHouse; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCuriousHouseHtml; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestJoinCuriousHouse; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyInfo; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyItem; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionCancel; @@ -291,13 +288,13 @@ public enum ExIncomingPackets implements IIncomingPackets REQUEST_MENTEE_WAITING_LIST(0xB8, RequestMenteeWaitingList::new, ConnectionState.IN_GAME), REQUEST_CLAN_ASK_JOIN_BY_NAME(0xB9, RequestClanAskJoinByName::new, ConnectionState.IN_GAME), REQUEST_IN_ZONE_WAITING_TIME(0xBA, RequestInzoneWaitingTime::new, ConnectionState.IN_GAME), - REQUEST_JOIN_CURIOUS_HOUSE(0xBB, RequestJoinCuriousHouse::new, ConnectionState.IN_GAME), - REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, RequestCancelCuriousHouse::new, ConnectionState.IN_GAME), + REQUEST_JOIN_CURIOUS_HOUSE(0xBB, null, ConnectionState.IN_GAME), + REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, null, ConnectionState.IN_GAME), REQUEST_LEAVE_CURIOUS_HOUSE(0xBD, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_LIST_CURIOUS_HOUSE(0xBE, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_CURIOUS_HOUSE(0xBF, null, ConnectionState.IN_GAME), REQUEST_LEAVE_OBSERVING_CURIOUS_HOUSE(0xC0, null, ConnectionState.IN_GAME), - REQUEST_CURIOUS_HOUSE_HTML(0xC1, RequestCuriousHouseHtml::new, ConnectionState.IN_GAME), + REQUEST_CURIOUS_HOUSE_HTML(0xC1, null, ConnectionState.IN_GAME), REQUEST_CURIOUS_HOUSE_RECORD(0xC2, null, ConnectionState.IN_GAME), EX_SYSSTRING(0xC3, null, ConnectionState.IN_GAME), REQUEST_EX_TRY_TO_PUT_SHAPE_SHIFTING_TARGET_ITEM(0xC4, RequestExTryToPutShapeShiftingTargetItem::new, ConnectionState.IN_GAME), diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 94271b4d12..7fed0609c3 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -44,7 +44,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -428,11 +427,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index b0676e562d..c2cb56b495 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java deleted file mode 100644 index ce871f6a18..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestCancelCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java deleted file mode 100644 index a4e6f04627..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Sdw - */ -public class RequestCuriousHouseHtml implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java deleted file mode 100644 index f0c221d875..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestJoinCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index dba86b67fe..c4905c2f5d 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -265,7 +261,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java deleted file mode 100644 index 372432ef02..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseEnter implements IClientOutgoingPacket -{ - public static final ExCuriousHouseEnter STATIC_PACKET = new ExCuriousHouseEnter(); - - private ExCuriousHouseEnter() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_ENTER.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java deleted file mode 100644 index 50e1e74725..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseLeave implements IClientOutgoingPacket -{ - public static final ExCuriousHouseLeave STATIC_PACKET = new ExCuriousHouseLeave(); - - private ExCuriousHouseLeave() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_LEAVE.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java deleted file mode 100644 index d26eee8d89..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import java.util.Collection; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseMemberList implements IClientOutgoingPacket -{ - private final int _id; - private final int _maxPlayers; - private final Collection _players; - - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) - { - _id = id; - _maxPlayers = maxPlayers; - _players = players; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_MEMBER_LIST.writeId(packet); - - packet.writeD(_id); - packet.writeD(_maxPlayers); - packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) - { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } - } - return true; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java deleted file mode 100644 index 14dca9be4a..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseObserveMode implements IClientOutgoingPacket -{ - public static final ExCuriousHouseObserveMode STATIC_ENABLED = new ExCuriousHouseObserveMode(0); - public static final ExCuriousHouseObserveMode STATIC_DISABLED = new ExCuriousHouseObserveMode(1); - - private final int _spectating; - - private ExCuriousHouseObserveMode(int spectating) - { - _spectating = spectating; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_OBSERVE_MODE.writeId(packet); - packet.writeC(_spectating); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java deleted file mode 100644 index b71caa5f14..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseRemainTime implements IClientOutgoingPacket -{ - private final int _time; - - public ExCuriousHouseRemainTime(int time) - { - _time = time; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_REMAIN_TIME.writeId(packet); - packet.writeD(_time); - - return true; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java deleted file mode 100644 index 1f09c4de0d..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseResult implements IClientOutgoingPacket -{ - private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; - - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) - { - _result = result; - _event = event; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); - packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> - { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); - return true; - } -} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java deleted file mode 100644 index abf627ab72..0000000000 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseState implements IClientOutgoingPacket -{ - public static final ExCuriousHouseState IDLE_PACKET = new ExCuriousHouseState(0); - public static final ExCuriousHouseState REGISTRATION_PACKET = new ExCuriousHouseState(1); - public static final ExCuriousHouseState PREPARE_PACKET = new ExCuriousHouseState(2); - public static final ExCuriousHouseState STARTING_PACKET = new ExCuriousHouseState(3); - - private final int _state; - - public ExCuriousHouseState(int state) - { - _state = state; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_STATE.writeId(packet); - packet.writeD(_state); - return true; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java index 32f4a05d7b..55d1c4bcfd 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java @@ -19,9 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets.dailymission; import java.time.LocalDate; import java.util.Collection; import java.util.Collections; -import java.util.function.Function; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; @@ -29,28 +29,28 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import it.sauronsoftware.cron4j.Predictor; - /** * @author Sdw */ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket { - final PlayerInstance _player; - private final Collection _rewards; - private static final Function _remainTime = pattern -> (new Predictor(pattern).nextMatchingTime() - Chronos.currentTimeMillis()) / 1000; + private static final SchedulingPattern DAILY_REUSE_PATTERN = new SchedulingPattern("30 6 * * *"); + private static final SchedulingPattern WEEKLY_REUSE_PATTERN = new SchedulingPattern("30 6 * * 1"); + private static final SchedulingPattern MONTHLY_REUSE_PATTERN = new SchedulingPattern("30 6 1 * *"); - private final long _dayRemainTime; - private final long _weekRemainTime; - private final long _monthRemainTime; + private final PlayerInstance _player; + private final Collection _rewards; + private final int _dayRemainTime; + private final int _weekRemainTime; + private final int _monthRemainTime; public ExOneDayReceiveRewardList(PlayerInstance player, boolean sendRewards) { _player = player; _rewards = sendRewards ? DailyMissionData.getInstance().getDailyMissionData(player) : Collections.emptyList(); - _dayRemainTime = _remainTime.apply("30 6 * * *"); - _weekRemainTime = _remainTime.apply("30 6 * * 1"); - _monthRemainTime = _remainTime.apply("30 6 1 * *"); + _dayRemainTime = (int) ((DAILY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _weekRemainTime = (int) ((WEEKLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _monthRemainTime = (int) ((MONTHLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); } @Override @@ -63,9 +63,9 @@ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket OutgoingPackets.EX_ONE_DAY_RECEIVE_REWARD_LIST.writeId(packet); - packet.writeD((int) _dayRemainTime); - packet.writeD((int) _weekRemainTime); - packet.writeD((int) _monthRemainTime); + packet.writeD(_dayRemainTime); + packet.writeD(_weekRemainTime); + packet.writeD(_monthRemainTime); packet.writeC(0x17); packet.writeD(_player.getClassId().getId()); packet.writeD(LocalDate.now().getDayOfWeek().ordinal()); // Day of week diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/.classpath b/L2J_Mobius_Classic_3.0_TheKamael/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/.classpath +++ b/L2J_Mobius_Classic_3.0_TheKamael/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/AdminCommands.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index 7a24ad3e15..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/Elpies.txt b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/Rabbits.txt b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/Race.txt b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 0eab305e47..7e2e26e629 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -156,7 +156,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -191,7 +191,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -249,7 +249,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -299,7 +299,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 992cd26fed..efb6423d4d 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -151,7 +151,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -176,13 +176,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -229,7 +229,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -266,6 +266,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -456,7 +457,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -483,7 +484,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -536,7 +537,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -583,7 +584,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -610,7 +611,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -641,7 +642,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -728,7 +729,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -780,7 +781,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -885,7 +886,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java index 5739f9ce23..fcedb44015 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java @@ -21,7 +21,6 @@ import java.util.logging.Logger; import org.l2jmobius.gameserver.handler.DailyMissionHandler; import handlers.dailymissionhandlers.BossDailyMissionHandler; -import handlers.dailymissionhandlers.CeremonyOfChaosDailyMissionHandler; import handlers.dailymissionhandlers.FishingDailyMissionHandler; import handlers.dailymissionhandlers.LevelDailyMissionHandler; import handlers.dailymissionhandlers.LoginMonthDailyMissionHandler; @@ -47,7 +46,6 @@ public class DailyMissionMasterHandler DailyMissionHandler.getInstance().registerHandler("quest", QuestDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("olympiad", OlympiadDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("siege", SiegeDailyMissionHandler::new); - DailyMissionHandler.getInstance().registerHandler("ceremonyofchaos", CeremonyOfChaosDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("boss", BossDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("monster", MonsterDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("fishing", FishingDailyMissionHandler::new); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/MasterHandler.java index 47d4aa8e81..007205ba0a 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -143,7 +142,6 @@ import handlers.bypasshandlers.Buy; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -414,7 +412,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -483,7 +480,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java deleted file mode 100644 index d03e8e82f6..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.dailymissionhandlers; - -import org.l2jmobius.gameserver.enums.DailyMissionStatus; -import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler; -import org.l2jmobius.gameserver.model.DailyMissionDataHolder; -import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.Containers; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosDailyMissionHandler extends AbstractDailyMissionHandler -{ - private final int _amount; - - public CeremonyOfChaosDailyMissionHandler(DailyMissionDataHolder holder) - { - super(holder); - _amount = holder.getRequiredCompletions(); - } - - @Override - public void init() - { - Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT, (OnCeremonyOfChaosMatchResult event) -> onCeremonyOfChaosMatchResult(event), this)); - } - - @Override - public boolean isAvailable(PlayerInstance player) - { - final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); - if (entry != null) - { - switch (entry.getStatus()) - { - case NOT_AVAILABLE: // Initial state - { - if (entry.getProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - storePlayerEntry(entry); - } - break; - } - case AVAILABLE: - { - return true; - } - } - } - return false; - } - - private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) - { - event.getMembers().forEach(member -> - { - final DailyMissionPlayerEntry entry = getPlayerEntry(member.getObjectId(), true); - if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE) - { - if (entry.increaseProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - } - storePlayerEntry(entry); - } - }); - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/01000-01099.xml index 7e9da5244b..afa0addcc2 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/01000-01099.xml @@ -623,7 +623,7 @@ - + @@ -646,7 +646,7 @@ - + @@ -741,7 +741,7 @@ - + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/01500-01599.xml index 0ccce26910..81b97c91b5 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/01500-01599.xml @@ -475,7 +475,7 @@ - + @@ -499,7 +499,7 @@ - + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/05200-05299.xml index ae179fd379..30dab78b0a 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/05200-05299.xml @@ -313,7 +313,7 @@ - + @@ -334,7 +334,7 @@ - + @@ -355,7 +355,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -397,7 +397,7 @@ - + @@ -418,7 +418,7 @@ - + @@ -439,7 +439,7 @@ - + @@ -460,7 +460,7 @@ - + @@ -481,7 +481,7 @@ - + @@ -502,7 +502,7 @@ - + @@ -523,7 +523,7 @@ - + @@ -544,7 +544,7 @@ - + @@ -565,7 +565,7 @@ - + @@ -586,7 +586,7 @@ - + @@ -607,7 +607,7 @@ - + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/05500-05599.xml index 51bd0f63c7..c9e719bc4d 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/05500-05599.xml @@ -736,7 +736,7 @@ - + @@ -755,7 +755,7 @@ - + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/06400-06499.xml index e3e9ef44ba..15660e58ee 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/29600-29699.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/29600-29699.xml index 9723391db6..21d7277fbe 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/29600-29699.xml +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/29600-29699.xml @@ -1112,7 +1112,7 @@ - + @@ -1138,7 +1138,7 @@ - + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/49400-49499.xml b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/49400-49499.xml index 8c394e639b..3c28b12367 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/49400-49499.xml +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/stats/items/49400-49499.xml @@ -1378,7 +1378,7 @@ - + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/items.xsd index b1e0459900..fbcd1255d6 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_Classic_3.0_TheKamael/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_Classic_3.0_TheKamael/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_Classic_3.0_TheKamael/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_Classic_3.0_TheKamael/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/time/AddPattern.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/time/AddPattern.java new file mode 100644 index 0000000000..893a279fd4 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/time/AddPattern.java @@ -0,0 +1,119 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class AddPattern implements NextTime +{ + private int _monthInc = -1; + private int _monthSet = -1; + private int _dayOfMonthInc = -1; + private int _dayOfMonthSet = -1; + private int _hourOfDayInc = -1; + private int _hourOfDaySet = -1; + private int _minuteInc = -1; + private int _minuteSet = -1; + + public AddPattern(String pattern) + { + String[] timeparts; + String[] parts = pattern.split("\\s+"); + if (parts.length == 2) + { + String datemodstr; + String datepartsstr = parts[0]; + String[] dateparts = datepartsstr.split(":"); + if (dateparts.length == 2) + { + if (dateparts[0].startsWith("+")) + { + _monthInc = Integer.parseInt(dateparts[0].substring(1)); + } + else + { + _monthSet = Integer.parseInt(dateparts[0]) - 1; + } + } + if ((datemodstr = dateparts[dateparts.length - 1]).startsWith("+")) + { + _dayOfMonthInc = Integer.parseInt(datemodstr.substring(1)); + } + else + { + _dayOfMonthSet = Integer.parseInt(datemodstr); + } + } + if ((timeparts = parts[parts.length - 1].split(":"))[0].startsWith("+")) + { + _hourOfDayInc = Integer.parseInt(timeparts[0].substring(1)); + } + else + { + _hourOfDaySet = Integer.parseInt(timeparts[0]); + } + if (timeparts[1].startsWith("+")) + { + _minuteInc = Integer.parseInt(timeparts[1].substring(1)); + } + else + { + _minuteSet = Integer.parseInt(timeparts[1]); + } + } + + @Override + public long next(long millis) + { + final GregorianCalendar gc = new GregorianCalendar(TimeZone.getDefault()); + gc.setTimeInMillis(millis); + if (_monthInc >= 0) + { + gc.add(2, _monthInc); + } + if (_monthSet >= 0) + { + gc.set(2, _monthSet); + } + if (_dayOfMonthInc >= 0) + { + gc.add(5, _dayOfMonthInc); + } + if (_dayOfMonthSet >= 0) + { + gc.set(5, _dayOfMonthSet); + } + if (_hourOfDayInc >= 0) + { + gc.add(11, _hourOfDayInc); + } + if (_hourOfDaySet >= 0) + { + gc.set(11, _hourOfDaySet); + } + if (_minuteInc >= 0) + { + gc.add(12, _minuteInc); + } + if (_minuteSet >= 0) + { + gc.set(12, _minuteSet); + } + return gc.getTimeInMillis(); + } +} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/time/NextTime.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/time/NextTime.java new file mode 100644 index 0000000000..d08d90164d --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/time/NextTime.java @@ -0,0 +1,22 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +public interface NextTime +{ + public long next(long var1); +} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/time/SchedulingPattern.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/time/SchedulingPattern.java new file mode 100644 index 0000000000..d9fdd655f3 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/commons/time/SchedulingPattern.java @@ -0,0 +1,841 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.ArrayList; +import java.util.GregorianCalendar; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.TimeZone; +import java.util.TreeMap; + +import org.l2jmobius.commons.util.Rnd; + +public class SchedulingPattern implements NextTime +{ + private static final int MINUTE_MIN_VALUE = 0; + private static final int MINUTE_MAX_VALUE = 59; + private static final int HOUR_MIN_VALUE = 0; + private static final int HOUR_MAX_VALUE = 23; + private static final int DAY_OF_MONTH_MIN_VALUE = 1; + private static final int DAY_OF_MONTH_MAX_VALUE = 31; + private static final int MONTH_MIN_VALUE = 1; + private static final int MONTH_MAX_VALUE = 12; + private static final int DAY_OF_WEEK_MIN_VALUE = 0; + private static final int DAY_OF_WEEK_MAX_VALUE = 7; + private static final ValueParser MINUTE_VALUE_PARSER = new MinuteValueParser(); + private static final ValueParser HOUR_VALUE_PARSER = new HourValueParser(); + private static final ValueParser DAY_OF_MONTH_VALUE_PARSER = new DayOfMonthValueParser(); + private static final ValueParser MONTH_VALUE_PARSER = new MonthValueParser(); + private static final ValueParser DAY_OF_WEEK_VALUE_PARSER = new DayOfWeekValueParser(); + private final String _asString; + protected List _minuteMatchers = new ArrayList<>(); + protected List _hourMatchers = new ArrayList<>(); + protected List _dayOfMonthMatchers = new ArrayList<>(); + protected List _monthMatchers = new ArrayList<>(); + protected List _dayOfWeekMatchers = new ArrayList<>(); + protected int _matcherSize = 0; + protected Map _hourAdder = new TreeMap<>(); + protected Map _hourAdderRnd = new TreeMap<>(); + protected Map _dayOfYearAdder = new TreeMap<>(); + protected Map _minuteAdderRnd = new TreeMap<>(); + protected Map _weekOfYearAdder = new TreeMap<>(); + + public static boolean validate(String schedulingPattern) + { + try + { + new SchedulingPattern(schedulingPattern); + } + catch (RuntimeException e) + { + return false; + } + return true; + } + + public SchedulingPattern(String pattern) throws RuntimeException + { + _asString = pattern; + StringTokenizer st1 = new StringTokenizer(pattern, "|"); + if (st1.countTokens() < 1) + { + throw new RuntimeException("invalid pattern: \"" + pattern + "\""); + } + + while (st1.hasMoreTokens()) + { + int i; + String localPattern = st1.nextToken(); + StringTokenizer st2 = new StringTokenizer(localPattern, " \t"); + int tokCnt = st2.countTokens(); + if ((tokCnt < 5) || (tokCnt > 6)) + { + throw new RuntimeException("invalid pattern: \"" + localPattern + "\""); + } + + try + { + String minutePattern = st2.nextToken(); + String[] minutePatternParts = minutePattern.split(":"); + if (minutePatternParts.length > 1) + { + for (i = 0; i < (minutePatternParts.length - 1); ++i) + { + if (minutePatternParts[i].length() <= 1) + { + continue; + } + + if (minutePatternParts[i].startsWith("~")) + { + _minuteAdderRnd.put(_matcherSize, Integer.parseInt(minutePatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + minutePatternParts[i] + "\""); + } + minutePattern = minutePatternParts[minutePatternParts.length - 1]; + } + _minuteMatchers.add(buildValueMatcher(minutePattern, MINUTE_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing minutes field: " + e.getMessage() + "."); + } + + try + { + String hourPattern = st2.nextToken(); + String[] hourPatternParts = hourPattern.split(":"); + if (hourPatternParts.length > 1) + { + for (i = 0; i < (hourPatternParts.length - 1); ++i) + { + if (hourPatternParts[i].length() <= 1) + { + continue; + } + + if (hourPatternParts[i].startsWith("+")) + { + _hourAdder.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + if (hourPatternParts[i].startsWith("~")) + { + _hourAdderRnd.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + hourPatternParts[i] + "\""); + } + hourPattern = hourPatternParts[hourPatternParts.length - 1]; + } + _hourMatchers.add(buildValueMatcher(hourPattern, HOUR_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing hours field: " + e.getMessage() + "."); + } + + try + { + String dayOfMonthPattern = st2.nextToken(); + String[] dayOfMonthPatternParts = dayOfMonthPattern.split(":"); + if (dayOfMonthPatternParts.length > 1) + { + for (i = 0; i < (dayOfMonthPatternParts.length - 1); ++i) + { + if (dayOfMonthPatternParts[i].length() <= 1) + { + continue; + } + + if (dayOfMonthPatternParts[i].startsWith("+")) + { + _dayOfYearAdder.put(_matcherSize, Integer.parseInt(dayOfMonthPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown day modifier \"" + dayOfMonthPatternParts[i] + "\""); + } + dayOfMonthPattern = dayOfMonthPatternParts[dayOfMonthPatternParts.length - 1]; + } + _dayOfMonthMatchers.add(buildValueMatcher(dayOfMonthPattern, DAY_OF_MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of month field: " + e.getMessage() + "."); + } + + try + { + _monthMatchers.add(buildValueMatcher(st2.nextToken(), MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing months field: " + e.getMessage() + "."); + } + + try + { + _dayOfWeekMatchers.add(buildValueMatcher(st2.nextToken(), DAY_OF_WEEK_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + + if (st2.hasMoreTokens()) + { + try + { + String weekOfYearAdderText = st2.nextToken(); + if (weekOfYearAdderText.charAt(0) != '+') + { + throw new RuntimeException("Unknown week of year addition in pattern \"" + localPattern + "\"."); + } + weekOfYearAdderText = weekOfYearAdderText.substring(1); + _weekOfYearAdder.put(_matcherSize, Integer.parseInt(weekOfYearAdderText)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + } + ++_matcherSize; + } + } + + private ValueMatcher buildValueMatcher(String str, ValueParser parser) throws Exception + { + if ((str.length() == 1) && str.equals("*")) + { + return new AlwaysTrueValueMatcher(); + } + + ArrayList values = new ArrayList<>(); + StringTokenizer st = new StringTokenizer(str, ","); + while (st.hasMoreTokens()) + { + List local; + String element = st.nextToken(); + try + { + local = parseListElement(element, parser); + } + catch (Exception e) + { + throw new Exception("invalid field \"" + str + "\", invalid element \"" + element + "\", " + e.getMessage()); + } + + for (Integer value : local) + { + if (values.contains(value)) + { + continue; + } + + values.add(value); + } + } + + if (values.size() == 0) + { + throw new Exception("invalid field \"" + str + "\""); + } + + if (parser == DAY_OF_MONTH_VALUE_PARSER) + { + return new DayOfMonthValueMatcher(values); + } + + return new IntArrayValueMatcher(values); + } + + private List parseListElement(String str, ValueParser parser) throws Exception + { + List values; + StringTokenizer st = new StringTokenizer(str, "/"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + try + { + values = parseRange(st.nextToken(), parser); + } + catch (Exception e) + { + throw new Exception("invalid range, " + e.getMessage()); + } + + if (size == 2) + { + int div; + String dStr = st.nextToken(); + + try + { + div = Integer.parseInt(dStr); + } + catch (NumberFormatException e) + { + throw new Exception("invalid divisor \"" + dStr + "\""); + } + + if (div < 1) + { + throw new Exception("non positive divisor \"" + div + "\""); + } + + ArrayList values2 = new ArrayList<>(); + for (int i = 0; i < values.size(); i += div) + { + values2.add(values.get(i)); + } + + return values2; + } + return values; + } + + private List parseRange(String str, ValueParser parser) throws Exception + { + int v2; + int v1; + if (str.equals("*")) + { + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + ArrayList values = new ArrayList<>(); + for (int i = min; i <= max; ++i) + { + values.add(i); + } + return values; + } + + StringTokenizer st = new StringTokenizer(str, "-"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + String v1Str = st.nextToken(); + try + { + v1 = parser.parse(v1Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v1Str + "\", " + e.getMessage()); + } + + if (size == 1) + { + ArrayList values = new ArrayList<>(); + values.add(v1); + return values; + } + + String v2Str = st.nextToken(); + try + { + v2 = parser.parse(v2Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v2Str + "\", " + e.getMessage()); + } + + ArrayList values = new ArrayList<>(); + if (v1 < v2) + { + for (int i = v1; i <= v2; ++i) + { + values.add(i); + } + } + else if (v1 > v2) + { + int i; + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + for (i = v1; i <= max; ++i) + { + values.add(i); + } + for (i = min; i <= v2; ++i) + { + values.add(i); + } + } + else + { + values.add(v1); + } + + return values; + } + + public boolean match(TimeZone timezone, long millis) + { + GregorianCalendar gc = new GregorianCalendar(timezone); + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + for (int i = 0; i < _matcherSize; ++i) + { + boolean eval = false; + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, -_weekOfYearAdder.get(i).intValue()); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, -_dayOfYearAdder.get(i).intValue()); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, -_hourAdder.get(i).intValue()); + } + int minute = gc.get(MONTH_MAX_VALUE); + int hour = gc.get(11); + int dayOfMonth = gc.get(5); + int month = gc.get(2) + 1; + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + int year = gc.get(1); + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + @SuppressWarnings("unused") + boolean bl = minuteMatcher.match(minute) && hourMatcher.match(hour) && (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, gc.isLeapYear(year)) : dayOfMonthMatcher.match(dayOfMonth)) && monthMatcher.match(month) && dayOfWeekMatcher.match(dayOfWeek) ? true : (eval = false); + if (!eval) + { + continue; + } + return true; + } + return false; + } + + public boolean match(long millis) + { + return match(TimeZone.getDefault(), millis); + } + + public long next(TimeZone timezone, long millis) + { + long result = -1L; + GregorianCalendar gc = new GregorianCalendar(timezone); + for (int i = 0; i < _matcherSize; ++i) + { + long next = -1L; + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, _weekOfYearAdder.get(i)); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, _dayOfYearAdder.get(i)); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, _hourAdder.get(i)); + } + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + SEARCH: do + { + int year = gc.get(1); + boolean isLeapYear = gc.isLeapYear(year); + for (int month = gc.get(2) + 1; month <= MONTH_MAX_VALUE; ++month) + { + if (monthMatcher.match(month)) + { + gc.set(2, month - 1); + int maxDayOfMonth = DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + for (int dayOfMonth = gc.get(5); dayOfMonth <= maxDayOfMonth; ++dayOfMonth) + { + if (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, isLeapYear) : dayOfMonthMatcher.match(dayOfMonth)) + { + gc.set(5, dayOfMonth); + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + if (dayOfWeekMatcher.match(dayOfWeek)) + { + for (int hour = gc.get(11); hour <= HOUR_MAX_VALUE; ++hour) + { + if (hourMatcher.match(hour)) + { + gc.set(11, hour); + for (int minute = gc.get(MONTH_MAX_VALUE); minute <= MINUTE_MAX_VALUE; ++minute) + { + if (!minuteMatcher.match(minute)) + { + continue; + } + + gc.set(MONTH_MAX_VALUE, minute); + long next0 = gc.getTimeInMillis(); + if (next0 <= millis) + { + continue; + } + + if ((next != -1L) && (next0 >= next)) + { + break SEARCH; + } + + next = next0; + if (_hourAdderRnd.containsKey(i)) + { + next += Rnd.get(_hourAdderRnd.get(i)) * 60 * 60 * 1000L; + } + + if (!_minuteAdderRnd.containsKey(i)) + { + break SEARCH; + } + + next += Rnd.get(_minuteAdderRnd.get(i)) * 60 * 1000L; + break SEARCH; + } + } + gc.set(MONTH_MAX_VALUE, 0); + } + } + } + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + } + gc.set(5, 1); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + gc.set(2, 0); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + gc.roll(1, true); + } + + while (true); + if ((next <= millis) || ((result != -1L) && (next >= result))) + { + continue; + } + + result = next; + } + return result; + } + + @Override + public long next(long millis) + { + return next(TimeZone.getDefault(), millis); + } + + @Override + public String toString() + { + return _asString; + } + + private static int parseAlias(String value, String[] aliases, int offset) throws Exception + { + for (int i = 0; i < aliases.length; ++i) + { + if (!aliases[i].equalsIgnoreCase(value)) + { + continue; + } + return offset + i; + } + throw new Exception("invalid alias \"" + value + "\""); + } + + private static class DayOfMonthValueMatcher extends IntArrayValueMatcher + { + private static final int[] lastDays = new int[] + { + DAY_OF_MONTH_MAX_VALUE, + 28, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE + }; + + public DayOfMonthValueMatcher(List integers) + { + super(integers); + } + + public boolean match(int value, int month, boolean isLeapYear) + { + return super.match(value) || ((value > 27) && match(32) && DayOfMonthValueMatcher.isLastDayOfMonth(value, month, isLeapYear)); + } + + public static int getLastDayOfMonth(int month, boolean isLeapYear) + { + if (isLeapYear && (month == 2)) + { + return 29; + } + + return lastDays[month - 1]; + } + + public static boolean isLastDayOfMonth(int value, int month, boolean isLeapYear) + { + return value == DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + } + } + + private static class IntArrayValueMatcher implements ValueMatcher + { + private final int[] values; + + public IntArrayValueMatcher(List integers) + { + int size = integers.size(); + values = new int[size]; + for (int i = 0; i < size; ++i) + { + try + { + values[i] = integers.get(i); + continue; + } + catch (Exception e) + { + throw new IllegalArgumentException(e.getMessage()); + } + } + } + + @Override + public boolean match(int value) + { + for (int i = 0; i < values.length; ++i) + { + if (values[i] != value) + { + continue; + } + return true; + } + return false; + } + } + + private static class AlwaysTrueValueMatcher implements ValueMatcher + { + private AlwaysTrueValueMatcher() + { + } + + @Override + public boolean match(int value) + { + return true; + } + } + + private static interface ValueMatcher + { + public boolean match(int var1); + } + + private static class DayOfWeekValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + }; + + public DayOfWeekValueParser() + { + super(DAY_OF_WEEK_MIN_VALUE, DAY_OF_WEEK_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value) % DAY_OF_WEEK_MAX_VALUE; + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 0); + } + } + } + + private static class MonthValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "jan", + "feb", + "mar", + "apr", + "may", + "jun", + "jul", + "aug", + "sep", + "oct", + "nov", + "dec" + }; + + public MonthValueParser() + { + super(MONTH_MIN_VALUE, MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value); + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 1); + } + } + } + + private static class DayOfMonthValueParser extends SimpleValueParser + { + public DayOfMonthValueParser() + { + super(DAY_OF_MONTH_MIN_VALUE, DAY_OF_MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + if (value.equalsIgnoreCase("L")) + { + return 32; + } + return super.parse(value); + } + } + + private static class HourValueParser extends SimpleValueParser + { + public HourValueParser() + { + super(HOUR_MIN_VALUE, HOUR_MAX_VALUE); + } + } + + private static class MinuteValueParser extends SimpleValueParser + { + public MinuteValueParser() + { + super(MINUTE_MIN_VALUE, MINUTE_MAX_VALUE); + } + } + + private static class SimpleValueParser implements ValueParser + { + protected int _minValue; + protected int _maxValue; + + public SimpleValueParser(int minValue, int maxValue) + { + _minValue = minValue; + _maxValue = maxValue; + } + + @Override + public int parse(String value) throws Exception + { + int i; + try + { + i = Integer.parseInt(value); + } + catch (NumberFormatException e) + { + throw new Exception("invalid integer value"); + } + if ((i < _minValue) || (i > _maxValue)) + { + throw new Exception("value out of range"); + } + return i; + } + + @Override + public int getMinValue() + { + return _minValue; + } + + @Override + public int getMaxValue() + { + return _maxValue; + } + } + + private static interface ValueParser + { + public int parse(String var1) throws Exception; + + public int getMinValue(); + + public int getMaxValue(); + } +} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/GameServer.java index e763e4e801..31c24e82c3 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/GameServer.java @@ -70,7 +70,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; import org.l2jmobius.gameserver.data.xml.EquipmentUpgradeData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -399,8 +398,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/Shutdown.java index 585b663269..f222a68ba7 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/Shutdown.java @@ -29,7 +29,6 @@ import org.l2jmobius.gameserver.data.SchemeBufferTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -453,8 +452,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java deleted file mode 100644 index fff7561e47..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosResult -{ - TIE, - WIN, - LOSE -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index b602138421..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,457 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - // else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - // { - // sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - // canRegister = false; - // } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANCE_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + resetTimedHuntingZonesWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); - resetDailyMissionRewards(); resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); + resetTimedHuntingZones(); + resetDailyMissionRewards(); + resetAttendanceRewards(); resetVip(); - onResetTimedHuntingZones(); - onResetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -89,8 +110,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -108,8 +128,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -156,12 +217,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -284,8 +344,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - @ScheduleTarget - public void onResetTimedHuntingZones() + public void resetTimedHuntingZones() { for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) { @@ -319,8 +378,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Special Hunting Zones has been resetted."); } - @ScheduleTarget - public void onResetWeeklyTimedHuntingZones() + public void resetTimedHuntingZonesWeekly() { for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) { @@ -354,7 +412,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Weekly Special Hunting Zones has been resetted."); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 4f663f1e96..4835e884e6 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java index db424ba772..cfd3089345 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1023,7 +1023,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5069,15 +5069,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Summon.java index 122aa8bea5..9526b8e6b3 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 6d6dea55ef..c22087eb0d 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -135,7 +135,6 @@ import org.l2jmobius.gameserver.instancemanager.RecipeManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -191,7 +190,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -199,7 +197,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -231,7 +228,6 @@ import org.l2jmobius.gameserver.model.holders.DamageTakenHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -721,10 +717,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -745,7 +737,8 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -2827,11 +2820,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4772,10 +4761,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -4958,7 +4943,7 @@ public class PlayerInstance extends Playable private Collection onDieDropItem(Creature killer) { final List droppedItems = new ArrayList<>(); - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return droppedItems; } @@ -5289,7 +5274,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8015,7 +8000,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8076,22 +8061,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return getTeam() != attacker.getTeam(); } // Check if the attacker is a Playable @@ -9259,12 +9235,12 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) + if (_inOlympiadMode) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; return false; } - if (isOnEvent()) // custom event message + if (isOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11071,12 +11047,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -12910,16 +12880,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13018,21 +12978,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13092,13 +13037,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13112,66 +13050,40 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13732,63 +13644,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index a30002000f..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,668 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 3ed2685a6f..94eee3bae6 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERING_FOR_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/events/EventType.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/events/EventType.java index 64db5ebeca..cea88eef7f 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/events/EventType.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/events/EventType.java @@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.model.events; import org.l2jmobius.commons.util.CommonUtil; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttack; @@ -206,9 +205,6 @@ public enum EventType // Olympiad events ON_OLYMPIAD_MATCH_RESULT(OnOlympiadMatchResult.class, void.class), - // Ceremony of Chaos events - ON_CEREMONY_OF_CHAOS_MATCH_RESULT(OnCeremonyOfChaosMatchResult.class, void.class), - // Playable events ON_PLAYABLE_EXP_CHANGED(OnPlayableExpChanged.class, void.class, TerminateReturn.class), diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java deleted file mode 100644 index fb0f2bb3da..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; - -import java.util.List; - -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; - -/** - * @author UnAfraid - */ -public class OnCeremonyOfChaosMatchResult implements IBaseEvent -{ - private final List _winners; - private final List _members; - - public OnCeremonyOfChaosMatchResult(List winners, List members) - { - _winners = winners; - _members = members; - } - - public List getWinners() - { - return _winners; - } - - public List getMembers() - { - return _members; - } - - @Override - public EventType getType() - { - return EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 197a15f962..9cadbc687e 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANCE_ZONE); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/Item.java index 6de5a49241..0b301e82b3 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -149,7 +148,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -224,7 +223,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -867,9 +866,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -944,11 +943,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 9061aecb5a..5c7c67c720 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 8a2ab86d68..e275602c19 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1127,7 +1127,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java index 74106c5a39..4484b135ed 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java @@ -39,9 +39,6 @@ import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestCha import org.l2jmobius.gameserver.network.clientpackets.attributechange.SendChangeAttributeTargetItem; import org.l2jmobius.gameserver.network.clientpackets.autoplay.ExAutoPlaySetting; import org.l2jmobius.gameserver.network.clientpackets.autoplay.ExRequestActivateAutoShortcut; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCancelCuriousHouse; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCuriousHouseHtml; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestJoinCuriousHouse; import org.l2jmobius.gameserver.network.clientpackets.classchange.ExRequestClassChange; import org.l2jmobius.gameserver.network.clientpackets.classchange.ExRequestClassChangeVerifying; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyInfo; @@ -305,13 +302,13 @@ public enum ExIncomingPackets implements IIncomingPackets REQUEST_MENTEE_WAITING_LIST(0xB8, RequestMenteeWaitingList::new, ConnectionState.IN_GAME), REQUEST_CLAN_ASK_JOIN_BY_NAME(0xB9, RequestClanAskJoinByName::new, ConnectionState.IN_GAME), REQUEST_IN_ZONE_WAITING_TIME(0xBA, RequestInzoneWaitingTime::new, ConnectionState.IN_GAME), - REQUEST_JOIN_CURIOUS_HOUSE(0xBB, RequestJoinCuriousHouse::new, ConnectionState.IN_GAME), - REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, RequestCancelCuriousHouse::new, ConnectionState.IN_GAME), + REQUEST_JOIN_CURIOUS_HOUSE(0xBB, null, ConnectionState.IN_GAME), + REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, null, ConnectionState.IN_GAME), REQUEST_LEAVE_CURIOUS_HOUSE(0xBD, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_LIST_CURIOUS_HOUSE(0xBE, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_CURIOUS_HOUSE(0xBF, null, ConnectionState.IN_GAME), REQUEST_LEAVE_OBSERVING_CURIOUS_HOUSE(0xC0, null, ConnectionState.IN_GAME), - REQUEST_CURIOUS_HOUSE_HTML(0xC1, RequestCuriousHouseHtml::new, ConnectionState.IN_GAME), + REQUEST_CURIOUS_HOUSE_HTML(0xC1, null, ConnectionState.IN_GAME), REQUEST_CURIOUS_HOUSE_RECORD(0xC2, null, ConnectionState.IN_GAME), EX_SYSSTRING(0xC3, null, ConnectionState.IN_GAME), REQUEST_EX_TRY_TO_PUT_SHAPE_SHIFTING_TARGET_ITEM(0xC4, RequestExTryToPutShapeShiftingTargetItem::new, ConnectionState.IN_GAME), diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 423e008f23..c21cef8b1c 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -44,7 +44,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -432,11 +431,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index b0676e562d..c2cb56b495 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java deleted file mode 100644 index ce871f6a18..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestCancelCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java deleted file mode 100644 index a4e6f04627..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Sdw - */ -public class RequestCuriousHouseHtml implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java deleted file mode 100644 index f0c221d875..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestJoinCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index da5f53500c..f894525c79 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -25,8 +25,6 @@ import org.l2jmobius.gameserver.instancemanager.RankManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -122,8 +120,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -266,7 +262,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java deleted file mode 100644 index 372432ef02..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseEnter implements IClientOutgoingPacket -{ - public static final ExCuriousHouseEnter STATIC_PACKET = new ExCuriousHouseEnter(); - - private ExCuriousHouseEnter() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_ENTER.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java deleted file mode 100644 index 50e1e74725..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseLeave implements IClientOutgoingPacket -{ - public static final ExCuriousHouseLeave STATIC_PACKET = new ExCuriousHouseLeave(); - - private ExCuriousHouseLeave() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_LEAVE.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java deleted file mode 100644 index d26eee8d89..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import java.util.Collection; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseMemberList implements IClientOutgoingPacket -{ - private final int _id; - private final int _maxPlayers; - private final Collection _players; - - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) - { - _id = id; - _maxPlayers = maxPlayers; - _players = players; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_MEMBER_LIST.writeId(packet); - - packet.writeD(_id); - packet.writeD(_maxPlayers); - packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) - { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } - } - return true; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java deleted file mode 100644 index 14dca9be4a..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseObserveMode implements IClientOutgoingPacket -{ - public static final ExCuriousHouseObserveMode STATIC_ENABLED = new ExCuriousHouseObserveMode(0); - public static final ExCuriousHouseObserveMode STATIC_DISABLED = new ExCuriousHouseObserveMode(1); - - private final int _spectating; - - private ExCuriousHouseObserveMode(int spectating) - { - _spectating = spectating; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_OBSERVE_MODE.writeId(packet); - packet.writeC(_spectating); - return true; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java deleted file mode 100644 index b71caa5f14..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseRemainTime implements IClientOutgoingPacket -{ - private final int _time; - - public ExCuriousHouseRemainTime(int time) - { - _time = time; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_REMAIN_TIME.writeId(packet); - packet.writeD(_time); - - return true; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java deleted file mode 100644 index 1f09c4de0d..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseResult implements IClientOutgoingPacket -{ - private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; - - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) - { - _result = result; - _event = event; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); - packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> - { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); - return true; - } -} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java deleted file mode 100644 index abf627ab72..0000000000 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseState implements IClientOutgoingPacket -{ - public static final ExCuriousHouseState IDLE_PACKET = new ExCuriousHouseState(0); - public static final ExCuriousHouseState REGISTRATION_PACKET = new ExCuriousHouseState(1); - public static final ExCuriousHouseState PREPARE_PACKET = new ExCuriousHouseState(2); - public static final ExCuriousHouseState STARTING_PACKET = new ExCuriousHouseState(3); - - private final int _state; - - public ExCuriousHouseState(int state) - { - _state = state; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_STATE.writeId(packet); - packet.writeD(_state); - return true; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java index 32f4a05d7b..55d1c4bcfd 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java @@ -19,9 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets.dailymission; import java.time.LocalDate; import java.util.Collection; import java.util.Collections; -import java.util.function.Function; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; @@ -29,28 +29,28 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import it.sauronsoftware.cron4j.Predictor; - /** * @author Sdw */ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket { - final PlayerInstance _player; - private final Collection _rewards; - private static final Function _remainTime = pattern -> (new Predictor(pattern).nextMatchingTime() - Chronos.currentTimeMillis()) / 1000; + private static final SchedulingPattern DAILY_REUSE_PATTERN = new SchedulingPattern("30 6 * * *"); + private static final SchedulingPattern WEEKLY_REUSE_PATTERN = new SchedulingPattern("30 6 * * 1"); + private static final SchedulingPattern MONTHLY_REUSE_PATTERN = new SchedulingPattern("30 6 1 * *"); - private final long _dayRemainTime; - private final long _weekRemainTime; - private final long _monthRemainTime; + private final PlayerInstance _player; + private final Collection _rewards; + private final int _dayRemainTime; + private final int _weekRemainTime; + private final int _monthRemainTime; public ExOneDayReceiveRewardList(PlayerInstance player, boolean sendRewards) { _player = player; _rewards = sendRewards ? DailyMissionData.getInstance().getDailyMissionData(player) : Collections.emptyList(); - _dayRemainTime = _remainTime.apply("30 6 * * *"); - _weekRemainTime = _remainTime.apply("30 6 * * 1"); - _monthRemainTime = _remainTime.apply("30 6 1 * *"); + _dayRemainTime = (int) ((DAILY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _weekRemainTime = (int) ((WEEKLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _monthRemainTime = (int) ((MONTHLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); } @Override @@ -63,9 +63,9 @@ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket OutgoingPackets.EX_ONE_DAY_RECEIVE_REWARD_LIST.writeId(packet); - packet.writeD((int) _dayRemainTime); - packet.writeD((int) _weekRemainTime); - packet.writeD((int) _monthRemainTime); + packet.writeD(_dayRemainTime); + packet.writeD(_weekRemainTime); + packet.writeD(_monthRemainTime); packet.writeC(0x17); packet.writeD(_player.getClassId().getId()); packet.writeD(LocalDate.now().getDayOfWeek().ordinal()); // Day of week diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_Classic_Interlude/.classpath b/L2J_Mobius_Classic_Interlude/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_Classic_Interlude/.classpath +++ b/L2J_Mobius_Classic_Interlude/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_Classic_Interlude/dist/game/config/AdminCommands.xml b/L2J_Mobius_Classic_Interlude/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index ffdf9cca5f..0000000000 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/events/Elpies.txt b/L2J_Mobius_Classic_Interlude/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/events/Rabbits.txt b/L2J_Mobius_Classic_Interlude/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/events/Race.txt b/L2J_Mobius_Classic_Interlude/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_Classic_Interlude/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_Classic_Interlude/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_Classic_Interlude/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 0eab305e47..7e2e26e629 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -156,7 +156,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -191,7 +191,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -249,7 +249,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -299,7 +299,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 992cd26fed..efb6423d4d 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -151,7 +151,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -176,13 +176,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -229,7 +229,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -266,6 +266,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -456,7 +457,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -483,7 +484,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -536,7 +537,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -583,7 +584,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -610,7 +611,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -641,7 +642,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -728,7 +729,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -780,7 +781,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -885,7 +886,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java index 33c1ad74b4..70bd0e70c2 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java @@ -21,7 +21,6 @@ import java.util.logging.Logger; import org.l2jmobius.gameserver.handler.DailyMissionHandler; import handlers.dailymissionhandlers.BossDailyMissionHandler; -import handlers.dailymissionhandlers.CeremonyOfChaosDailyMissionHandler; import handlers.dailymissionhandlers.FishingDailyMissionHandler; import handlers.dailymissionhandlers.LevelDailyMissionHandler; import handlers.dailymissionhandlers.LoginMonthDailyMissionHandler; @@ -45,7 +44,6 @@ public class DailyMissionMasterHandler DailyMissionHandler.getInstance().registerHandler("quest", QuestDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("olympiad", OlympiadDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("siege", SiegeDailyMissionHandler::new); - DailyMissionHandler.getInstance().registerHandler("ceremonyofchaos", CeremonyOfChaosDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("boss", BossDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("fishing", FishingDailyMissionHandler::new); LOGGER.info(DailyMissionMasterHandler.class.getSimpleName() + ": Loaded " + DailyMissionHandler.getInstance().size() + " handlers."); diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/MasterHandler.java index 0ddb3181f8..a425f13ceb 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -143,7 +142,6 @@ import handlers.bypasshandlers.Buy; import handlers.bypasshandlers.ChangePlayerName; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -413,7 +411,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -482,7 +479,6 @@ public class MasterHandler ChangePlayerName.class, ChatLink.class, ClanWarehouse.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java deleted file mode 100644 index d03e8e82f6..0000000000 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.dailymissionhandlers; - -import org.l2jmobius.gameserver.enums.DailyMissionStatus; -import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler; -import org.l2jmobius.gameserver.model.DailyMissionDataHolder; -import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.Containers; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosDailyMissionHandler extends AbstractDailyMissionHandler -{ - private final int _amount; - - public CeremonyOfChaosDailyMissionHandler(DailyMissionDataHolder holder) - { - super(holder); - _amount = holder.getRequiredCompletions(); - } - - @Override - public void init() - { - Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT, (OnCeremonyOfChaosMatchResult event) -> onCeremonyOfChaosMatchResult(event), this)); - } - - @Override - public boolean isAvailable(PlayerInstance player) - { - final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); - if (entry != null) - { - switch (entry.getStatus()) - { - case NOT_AVAILABLE: // Initial state - { - if (entry.getProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - storePlayerEntry(entry); - } - break; - } - case AVAILABLE: - { - return true; - } - } - } - return false; - } - - private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) - { - event.getMembers().forEach(member -> - { - final DailyMissionPlayerEntry entry = getPlayerEntry(member.getObjectId(), true); - if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE) - { - if (entry.increaseProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - } - storePlayerEntry(entry); - } - }); - } -} diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/00000-00099.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/00000-00099.xml index 3271845ab2..317ee83744 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/00000-00099.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/00000-00099.xml @@ -1155,7 +1155,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/00700-00799.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/00700-00799.xml index d5fcaa3c01..c69804de98 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/00700-00799.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/00700-00799.xml @@ -393,7 +393,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -436,7 +436,7 @@ - + @@ -452,7 +452,7 @@ - + @@ -491,7 +491,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -537,7 +537,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -598,7 +598,7 @@ - + @@ -615,7 +615,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/00900-00999.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/00900-00999.xml index 9185da4a58..44303e5466 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/00900-00999.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/00900-00999.xml @@ -728,7 +728,7 @@ - + @@ -746,7 +746,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -773,7 +773,7 @@ - + @@ -788,7 +788,7 @@ - + @@ -806,7 +806,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -833,7 +833,7 @@ - + @@ -848,7 +848,7 @@ - + @@ -866,7 +866,7 @@ - + @@ -881,7 +881,7 @@ - + @@ -893,7 +893,7 @@ - + @@ -908,7 +908,7 @@ - + @@ -926,7 +926,7 @@ - + @@ -941,7 +941,7 @@ - + @@ -953,7 +953,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/01000-01099.xml index 376059b37f..fc841aa214 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/01000-01099.xml @@ -700,7 +700,7 @@ - + @@ -723,7 +723,7 @@ - + @@ -881,7 +881,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/01500-01599.xml index bd961bd01a..eed73af47f 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/01500-01599.xml @@ -467,7 +467,7 @@ - + @@ -490,7 +490,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/05200-05299.xml index b4886e33ad..a927a40110 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/05200-05299.xml @@ -486,7 +486,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -528,7 +528,7 @@ - + @@ -549,7 +549,7 @@ - + @@ -570,7 +570,7 @@ - + @@ -591,7 +591,7 @@ - + @@ -612,7 +612,7 @@ - + @@ -633,7 +633,7 @@ - + @@ -654,7 +654,7 @@ - + @@ -675,7 +675,7 @@ - + @@ -696,7 +696,7 @@ - + @@ -717,7 +717,7 @@ - + @@ -738,7 +738,7 @@ - + @@ -759,7 +759,7 @@ - + @@ -780,7 +780,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/05500-05599.xml index 8a1eb60194..09224fec3d 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/05500-05599.xml @@ -1082,7 +1082,7 @@ - + @@ -1101,7 +1101,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/06400-06499.xml index 8ef613c844..6515069390 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -135,7 +135,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08100-08199.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08100-08199.xml index 7ff7a209e3..8b89a9eede 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08100-08199.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08100-08199.xml @@ -2125,7 +2125,7 @@ - + @@ -2142,7 +2142,7 @@ - + @@ -2159,7 +2159,7 @@ - + @@ -2176,7 +2176,7 @@ - + @@ -2193,7 +2193,7 @@ - + @@ -2210,7 +2210,7 @@ - + @@ -2227,7 +2227,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08200-08299.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08200-08299.xml index ccb00473a9..1f9379aa9b 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08200-08299.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08200-08299.xml @@ -12,7 +12,7 @@ - + @@ -27,7 +27,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08600-08699.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08600-08699.xml index 81c97902a7..17833c5c07 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08600-08699.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08600-08699.xml @@ -374,7 +374,7 @@ - + @@ -512,7 +512,7 @@ - + @@ -635,7 +635,7 @@ - + @@ -966,7 +966,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -998,7 +998,7 @@ - + @@ -1014,7 +1014,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1046,7 +1046,7 @@ - + @@ -1062,7 +1062,7 @@ - + @@ -1078,7 +1078,7 @@ - + @@ -1094,7 +1094,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1126,7 +1126,7 @@ - + @@ -1142,7 +1142,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1174,7 +1174,7 @@ - + @@ -1190,7 +1190,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08700-08799.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08700-08799.xml index 84d81a4b37..5c70280280 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08700-08799.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/08700-08799.xml @@ -1104,7 +1104,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/09200-09299.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/09200-09299.xml index bce8e6cf52..1de6356e2a 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/09200-09299.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/09200-09299.xml @@ -116,7 +116,7 @@ - + @@ -138,7 +138,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/09700-09799.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/09700-09799.xml index d2a62b73c7..f13f9c2df8 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/09700-09799.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/09700-09799.xml @@ -46,7 +46,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/10100-10199.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/10100-10199.xml index 8fda375bd3..49fce6e1eb 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/10100-10199.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/10100-10199.xml @@ -1118,7 +1118,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/13000-13099.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/13000-13099.xml index aa40f24616..ed340a4d04 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/13000-13099.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/13000-13099.xml @@ -520,7 +520,7 @@ - + @@ -940,7 +940,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/13700-13799.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/13700-13799.xml index ffd889b6bb..05f35d26f3 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/13700-13799.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/13700-13799.xml @@ -821,7 +821,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/14600-14699.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/14600-14699.xml index 046a1fe6fa..d852d47091 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/14600-14699.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/14600-14699.xml @@ -1802,7 +1802,7 @@ - + @@ -1935,7 +1935,7 @@ - + @@ -2051,7 +2051,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/14700-14799.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/14700-14799.xml index d4b911f12d..d3b39dbbde 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/14700-14799.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/14700-14799.xml @@ -13,7 +13,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/17000-17099.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/17000-17099.xml index 331cadafaa..5a1bb334f2 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/17000-17099.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/17000-17099.xml @@ -97,7 +97,7 @@ - + @@ -352,7 +352,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/20300-20399.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/20300-20399.xml index ef0b89cf97..050b1ff7b0 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/20300-20399.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/20300-20399.xml @@ -988,7 +988,7 @@ - + @@ -1104,7 +1104,7 @@ - + @@ -1220,7 +1220,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/21000-21099.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/21000-21099.xml index d6fb37f7f8..c828247562 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/21000-21099.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/21000-21099.xml @@ -686,7 +686,7 @@ - + @@ -764,7 +764,7 @@ - + @@ -786,7 +786,7 @@ - + @@ -808,7 +808,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/21100-21199.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/21100-21199.xml index fbbea204f6..9f23ca959b 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/21100-21199.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/21100-21199.xml @@ -1575,7 +1575,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/21200-21299.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/21200-21299.xml index effdd209ee..bd025d4d6a 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/21200-21299.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/21200-21299.xml @@ -207,7 +207,7 @@ - + @@ -802,7 +802,7 @@ - + @@ -821,7 +821,7 @@ - + @@ -870,7 +870,7 @@ - + @@ -889,7 +889,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/22000-22099.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/22000-22099.xml index f31bc26203..643896e06b 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/22000-22099.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/22000-22099.xml @@ -449,7 +449,7 @@ - + @@ -472,7 +472,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -737,7 +737,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/22500-22599.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/22500-22599.xml index e6f61c6109..fbfe230224 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/22500-22599.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/22500-22599.xml @@ -1030,7 +1030,7 @@ - + @@ -1050,7 +1050,7 @@ - + @@ -1070,7 +1070,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/22600-22699.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/22600-22699.xml index afdc8ca402..1cd3f911ff 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/22600-22699.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/22600-22699.xml @@ -432,7 +432,7 @@ - + @@ -455,7 +455,7 @@ - + @@ -478,7 +478,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23200-23299.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23200-23299.xml index 6a0521cd58..7cda9cbe0a 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23200-23299.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23200-23299.xml @@ -163,7 +163,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -562,7 +562,7 @@ - + @@ -577,7 +577,7 @@ - + @@ -590,7 +590,7 @@ - + @@ -608,7 +608,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23300-23399.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23300-23399.xml index 8d929f470d..354303b6b6 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23300-23399.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23300-23399.xml @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1411,7 +1411,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23400-23499.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23400-23499.xml index 3a481fd592..3f97029864 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23400-23499.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23400-23499.xml @@ -1092,7 +1092,7 @@ - + @@ -1110,7 +1110,7 @@ - + @@ -1164,7 +1164,7 @@ - + @@ -1426,7 +1426,7 @@ - + @@ -1442,7 +1442,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23500-23599.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23500-23599.xml index 68ae350e6c..d97d50f712 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23500-23599.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23500-23599.xml @@ -93,7 +93,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23600-23699.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23600-23699.xml index beb52d43ff..3e2086ddb7 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23600-23699.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/23600-23699.xml @@ -189,7 +189,7 @@ - + @@ -566,7 +566,7 @@ - + @@ -760,7 +760,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/28500-28599.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/28500-28599.xml index 0c3726ef42..9a3775b12a 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/28500-28599.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/28500-28599.xml @@ -40,7 +40,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/30300-30399.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/30300-30399.xml index ee6484587d..ed9dc9dd8a 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/30300-30399.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/30300-30399.xml @@ -984,7 +984,7 @@ - + @@ -1008,7 +1008,7 @@ - + @@ -1032,7 +1032,7 @@ - + @@ -1052,7 +1052,7 @@ - + @@ -1075,7 +1075,7 @@ - + @@ -1098,7 +1098,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/34000-34099.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/34000-34099.xml index 915d14e6ce..e19f469ad3 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/34000-34099.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/34000-34099.xml @@ -180,7 +180,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -220,7 +220,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/34600-34699.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/34600-34699.xml index aaa4c16156..65c7dff233 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/34600-34699.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/34600-34699.xml @@ -41,7 +41,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/35600-35699.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/35600-35699.xml index 94c4e74b2c..8d314f2d39 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/35600-35699.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/35600-35699.xml @@ -1423,7 +1423,7 @@ - + @@ -1443,7 +1443,7 @@ - + @@ -1463,7 +1463,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/35700-35799.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/35700-35799.xml index 38cae96e98..cd937f5a12 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/35700-35799.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/35700-35799.xml @@ -771,7 +771,7 @@ - + @@ -791,7 +791,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/35900-35999.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/35900-35999.xml index 7b869217d2..b149254746 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/35900-35999.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/35900-35999.xml @@ -475,7 +475,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/36000-36099.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/36000-36099.xml index 6006920c6e..da5462dd68 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/36000-36099.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/36000-36099.xml @@ -377,7 +377,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/36200-36299.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/36200-36299.xml index 406a2d1f9c..dc902a439c 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/36200-36299.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/36200-36299.xml @@ -791,7 +791,7 @@ - + @@ -1079,7 +1079,7 @@ - + @@ -1096,7 +1096,7 @@ - + @@ -1113,7 +1113,7 @@ - + @@ -1130,7 +1130,7 @@ - + @@ -1146,7 +1146,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1210,7 +1210,7 @@ - + @@ -1247,7 +1247,7 @@ - + @@ -1265,7 +1265,7 @@ - + @@ -1283,7 +1283,7 @@ - + @@ -1301,7 +1301,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/36300-36399.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/36300-36399.xml index f2517964ec..f0616ad3a1 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/36300-36399.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/36300-36399.xml @@ -48,7 +48,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -80,7 +80,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -119,7 +119,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/37600-37699.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/37600-37699.xml index 3ab4d4cdcc..560c582d77 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/37600-37699.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/37600-37699.xml @@ -1397,7 +1397,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/40000-40099.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/40000-40099.xml index 44e7b24b5d..58c0c622e1 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/40000-40099.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/40000-40099.xml @@ -870,7 +870,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47300-47399.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47300-47399.xml index 96102260e7..3b66dccf5f 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47300-47399.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47300-47399.xml @@ -1187,7 +1187,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47400-47499.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47400-47499.xml index dd3407d373..e1116ad3d9 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47400-47499.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47400-47499.xml @@ -51,7 +51,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -442,7 +442,7 @@ - + @@ -473,7 +473,7 @@ - + @@ -502,7 +502,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47500-47599.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47500-47599.xml index 8ceb1305f9..69ce07f4ca 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47500-47599.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47500-47599.xml @@ -539,7 +539,7 @@ - + @@ -552,7 +552,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47600-47699.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47600-47699.xml index a4d22663d1..7e6ba6b8df 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47600-47699.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47600-47699.xml @@ -652,7 +652,7 @@ - + @@ -668,7 +668,7 @@ - + @@ -684,7 +684,7 @@ - + @@ -700,7 +700,7 @@ - + @@ -716,7 +716,7 @@ - + @@ -743,7 +743,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -779,7 +779,7 @@ - + @@ -797,7 +797,7 @@ - + @@ -883,7 +883,7 @@ - + @@ -904,7 +904,7 @@ - + @@ -922,7 +922,7 @@ - + @@ -943,7 +943,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47700-47799.xml b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47700-47799.xml index e96b08ff96..5273aec507 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47700-47799.xml +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/stats/items/47700-47799.xml @@ -500,7 +500,7 @@ - + @@ -520,7 +520,7 @@ - + @@ -538,7 +538,7 @@ - + @@ -558,7 +558,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/items.xsd b/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/items.xsd index 4663f1d0bc..9afe2f7b99 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/items.xsd +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/items.xsd @@ -90,7 +90,7 @@ - + diff --git a/L2J_Mobius_Classic_Interlude/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_Classic_Interlude/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_Classic_Interlude/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_Interlude/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_Classic_Interlude/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_Classic_Interlude/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/time/AddPattern.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/time/AddPattern.java new file mode 100644 index 0000000000..893a279fd4 --- /dev/null +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/time/AddPattern.java @@ -0,0 +1,119 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class AddPattern implements NextTime +{ + private int _monthInc = -1; + private int _monthSet = -1; + private int _dayOfMonthInc = -1; + private int _dayOfMonthSet = -1; + private int _hourOfDayInc = -1; + private int _hourOfDaySet = -1; + private int _minuteInc = -1; + private int _minuteSet = -1; + + public AddPattern(String pattern) + { + String[] timeparts; + String[] parts = pattern.split("\\s+"); + if (parts.length == 2) + { + String datemodstr; + String datepartsstr = parts[0]; + String[] dateparts = datepartsstr.split(":"); + if (dateparts.length == 2) + { + if (dateparts[0].startsWith("+")) + { + _monthInc = Integer.parseInt(dateparts[0].substring(1)); + } + else + { + _monthSet = Integer.parseInt(dateparts[0]) - 1; + } + } + if ((datemodstr = dateparts[dateparts.length - 1]).startsWith("+")) + { + _dayOfMonthInc = Integer.parseInt(datemodstr.substring(1)); + } + else + { + _dayOfMonthSet = Integer.parseInt(datemodstr); + } + } + if ((timeparts = parts[parts.length - 1].split(":"))[0].startsWith("+")) + { + _hourOfDayInc = Integer.parseInt(timeparts[0].substring(1)); + } + else + { + _hourOfDaySet = Integer.parseInt(timeparts[0]); + } + if (timeparts[1].startsWith("+")) + { + _minuteInc = Integer.parseInt(timeparts[1].substring(1)); + } + else + { + _minuteSet = Integer.parseInt(timeparts[1]); + } + } + + @Override + public long next(long millis) + { + final GregorianCalendar gc = new GregorianCalendar(TimeZone.getDefault()); + gc.setTimeInMillis(millis); + if (_monthInc >= 0) + { + gc.add(2, _monthInc); + } + if (_monthSet >= 0) + { + gc.set(2, _monthSet); + } + if (_dayOfMonthInc >= 0) + { + gc.add(5, _dayOfMonthInc); + } + if (_dayOfMonthSet >= 0) + { + gc.set(5, _dayOfMonthSet); + } + if (_hourOfDayInc >= 0) + { + gc.add(11, _hourOfDayInc); + } + if (_hourOfDaySet >= 0) + { + gc.set(11, _hourOfDaySet); + } + if (_minuteInc >= 0) + { + gc.add(12, _minuteInc); + } + if (_minuteSet >= 0) + { + gc.set(12, _minuteSet); + } + return gc.getTimeInMillis(); + } +} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/time/NextTime.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/time/NextTime.java new file mode 100644 index 0000000000..d08d90164d --- /dev/null +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/time/NextTime.java @@ -0,0 +1,22 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +public interface NextTime +{ + public long next(long var1); +} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/time/SchedulingPattern.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/time/SchedulingPattern.java new file mode 100644 index 0000000000..d9fdd655f3 --- /dev/null +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/commons/time/SchedulingPattern.java @@ -0,0 +1,841 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.ArrayList; +import java.util.GregorianCalendar; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.TimeZone; +import java.util.TreeMap; + +import org.l2jmobius.commons.util.Rnd; + +public class SchedulingPattern implements NextTime +{ + private static final int MINUTE_MIN_VALUE = 0; + private static final int MINUTE_MAX_VALUE = 59; + private static final int HOUR_MIN_VALUE = 0; + private static final int HOUR_MAX_VALUE = 23; + private static final int DAY_OF_MONTH_MIN_VALUE = 1; + private static final int DAY_OF_MONTH_MAX_VALUE = 31; + private static final int MONTH_MIN_VALUE = 1; + private static final int MONTH_MAX_VALUE = 12; + private static final int DAY_OF_WEEK_MIN_VALUE = 0; + private static final int DAY_OF_WEEK_MAX_VALUE = 7; + private static final ValueParser MINUTE_VALUE_PARSER = new MinuteValueParser(); + private static final ValueParser HOUR_VALUE_PARSER = new HourValueParser(); + private static final ValueParser DAY_OF_MONTH_VALUE_PARSER = new DayOfMonthValueParser(); + private static final ValueParser MONTH_VALUE_PARSER = new MonthValueParser(); + private static final ValueParser DAY_OF_WEEK_VALUE_PARSER = new DayOfWeekValueParser(); + private final String _asString; + protected List _minuteMatchers = new ArrayList<>(); + protected List _hourMatchers = new ArrayList<>(); + protected List _dayOfMonthMatchers = new ArrayList<>(); + protected List _monthMatchers = new ArrayList<>(); + protected List _dayOfWeekMatchers = new ArrayList<>(); + protected int _matcherSize = 0; + protected Map _hourAdder = new TreeMap<>(); + protected Map _hourAdderRnd = new TreeMap<>(); + protected Map _dayOfYearAdder = new TreeMap<>(); + protected Map _minuteAdderRnd = new TreeMap<>(); + protected Map _weekOfYearAdder = new TreeMap<>(); + + public static boolean validate(String schedulingPattern) + { + try + { + new SchedulingPattern(schedulingPattern); + } + catch (RuntimeException e) + { + return false; + } + return true; + } + + public SchedulingPattern(String pattern) throws RuntimeException + { + _asString = pattern; + StringTokenizer st1 = new StringTokenizer(pattern, "|"); + if (st1.countTokens() < 1) + { + throw new RuntimeException("invalid pattern: \"" + pattern + "\""); + } + + while (st1.hasMoreTokens()) + { + int i; + String localPattern = st1.nextToken(); + StringTokenizer st2 = new StringTokenizer(localPattern, " \t"); + int tokCnt = st2.countTokens(); + if ((tokCnt < 5) || (tokCnt > 6)) + { + throw new RuntimeException("invalid pattern: \"" + localPattern + "\""); + } + + try + { + String minutePattern = st2.nextToken(); + String[] minutePatternParts = minutePattern.split(":"); + if (minutePatternParts.length > 1) + { + for (i = 0; i < (minutePatternParts.length - 1); ++i) + { + if (minutePatternParts[i].length() <= 1) + { + continue; + } + + if (minutePatternParts[i].startsWith("~")) + { + _minuteAdderRnd.put(_matcherSize, Integer.parseInt(minutePatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + minutePatternParts[i] + "\""); + } + minutePattern = minutePatternParts[minutePatternParts.length - 1]; + } + _minuteMatchers.add(buildValueMatcher(minutePattern, MINUTE_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing minutes field: " + e.getMessage() + "."); + } + + try + { + String hourPattern = st2.nextToken(); + String[] hourPatternParts = hourPattern.split(":"); + if (hourPatternParts.length > 1) + { + for (i = 0; i < (hourPatternParts.length - 1); ++i) + { + if (hourPatternParts[i].length() <= 1) + { + continue; + } + + if (hourPatternParts[i].startsWith("+")) + { + _hourAdder.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + if (hourPatternParts[i].startsWith("~")) + { + _hourAdderRnd.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + hourPatternParts[i] + "\""); + } + hourPattern = hourPatternParts[hourPatternParts.length - 1]; + } + _hourMatchers.add(buildValueMatcher(hourPattern, HOUR_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing hours field: " + e.getMessage() + "."); + } + + try + { + String dayOfMonthPattern = st2.nextToken(); + String[] dayOfMonthPatternParts = dayOfMonthPattern.split(":"); + if (dayOfMonthPatternParts.length > 1) + { + for (i = 0; i < (dayOfMonthPatternParts.length - 1); ++i) + { + if (dayOfMonthPatternParts[i].length() <= 1) + { + continue; + } + + if (dayOfMonthPatternParts[i].startsWith("+")) + { + _dayOfYearAdder.put(_matcherSize, Integer.parseInt(dayOfMonthPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown day modifier \"" + dayOfMonthPatternParts[i] + "\""); + } + dayOfMonthPattern = dayOfMonthPatternParts[dayOfMonthPatternParts.length - 1]; + } + _dayOfMonthMatchers.add(buildValueMatcher(dayOfMonthPattern, DAY_OF_MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of month field: " + e.getMessage() + "."); + } + + try + { + _monthMatchers.add(buildValueMatcher(st2.nextToken(), MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing months field: " + e.getMessage() + "."); + } + + try + { + _dayOfWeekMatchers.add(buildValueMatcher(st2.nextToken(), DAY_OF_WEEK_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + + if (st2.hasMoreTokens()) + { + try + { + String weekOfYearAdderText = st2.nextToken(); + if (weekOfYearAdderText.charAt(0) != '+') + { + throw new RuntimeException("Unknown week of year addition in pattern \"" + localPattern + "\"."); + } + weekOfYearAdderText = weekOfYearAdderText.substring(1); + _weekOfYearAdder.put(_matcherSize, Integer.parseInt(weekOfYearAdderText)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + } + ++_matcherSize; + } + } + + private ValueMatcher buildValueMatcher(String str, ValueParser parser) throws Exception + { + if ((str.length() == 1) && str.equals("*")) + { + return new AlwaysTrueValueMatcher(); + } + + ArrayList values = new ArrayList<>(); + StringTokenizer st = new StringTokenizer(str, ","); + while (st.hasMoreTokens()) + { + List local; + String element = st.nextToken(); + try + { + local = parseListElement(element, parser); + } + catch (Exception e) + { + throw new Exception("invalid field \"" + str + "\", invalid element \"" + element + "\", " + e.getMessage()); + } + + for (Integer value : local) + { + if (values.contains(value)) + { + continue; + } + + values.add(value); + } + } + + if (values.size() == 0) + { + throw new Exception("invalid field \"" + str + "\""); + } + + if (parser == DAY_OF_MONTH_VALUE_PARSER) + { + return new DayOfMonthValueMatcher(values); + } + + return new IntArrayValueMatcher(values); + } + + private List parseListElement(String str, ValueParser parser) throws Exception + { + List values; + StringTokenizer st = new StringTokenizer(str, "/"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + try + { + values = parseRange(st.nextToken(), parser); + } + catch (Exception e) + { + throw new Exception("invalid range, " + e.getMessage()); + } + + if (size == 2) + { + int div; + String dStr = st.nextToken(); + + try + { + div = Integer.parseInt(dStr); + } + catch (NumberFormatException e) + { + throw new Exception("invalid divisor \"" + dStr + "\""); + } + + if (div < 1) + { + throw new Exception("non positive divisor \"" + div + "\""); + } + + ArrayList values2 = new ArrayList<>(); + for (int i = 0; i < values.size(); i += div) + { + values2.add(values.get(i)); + } + + return values2; + } + return values; + } + + private List parseRange(String str, ValueParser parser) throws Exception + { + int v2; + int v1; + if (str.equals("*")) + { + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + ArrayList values = new ArrayList<>(); + for (int i = min; i <= max; ++i) + { + values.add(i); + } + return values; + } + + StringTokenizer st = new StringTokenizer(str, "-"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + String v1Str = st.nextToken(); + try + { + v1 = parser.parse(v1Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v1Str + "\", " + e.getMessage()); + } + + if (size == 1) + { + ArrayList values = new ArrayList<>(); + values.add(v1); + return values; + } + + String v2Str = st.nextToken(); + try + { + v2 = parser.parse(v2Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v2Str + "\", " + e.getMessage()); + } + + ArrayList values = new ArrayList<>(); + if (v1 < v2) + { + for (int i = v1; i <= v2; ++i) + { + values.add(i); + } + } + else if (v1 > v2) + { + int i; + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + for (i = v1; i <= max; ++i) + { + values.add(i); + } + for (i = min; i <= v2; ++i) + { + values.add(i); + } + } + else + { + values.add(v1); + } + + return values; + } + + public boolean match(TimeZone timezone, long millis) + { + GregorianCalendar gc = new GregorianCalendar(timezone); + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + for (int i = 0; i < _matcherSize; ++i) + { + boolean eval = false; + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, -_weekOfYearAdder.get(i).intValue()); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, -_dayOfYearAdder.get(i).intValue()); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, -_hourAdder.get(i).intValue()); + } + int minute = gc.get(MONTH_MAX_VALUE); + int hour = gc.get(11); + int dayOfMonth = gc.get(5); + int month = gc.get(2) + 1; + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + int year = gc.get(1); + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + @SuppressWarnings("unused") + boolean bl = minuteMatcher.match(minute) && hourMatcher.match(hour) && (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, gc.isLeapYear(year)) : dayOfMonthMatcher.match(dayOfMonth)) && monthMatcher.match(month) && dayOfWeekMatcher.match(dayOfWeek) ? true : (eval = false); + if (!eval) + { + continue; + } + return true; + } + return false; + } + + public boolean match(long millis) + { + return match(TimeZone.getDefault(), millis); + } + + public long next(TimeZone timezone, long millis) + { + long result = -1L; + GregorianCalendar gc = new GregorianCalendar(timezone); + for (int i = 0; i < _matcherSize; ++i) + { + long next = -1L; + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, _weekOfYearAdder.get(i)); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, _dayOfYearAdder.get(i)); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, _hourAdder.get(i)); + } + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + SEARCH: do + { + int year = gc.get(1); + boolean isLeapYear = gc.isLeapYear(year); + for (int month = gc.get(2) + 1; month <= MONTH_MAX_VALUE; ++month) + { + if (monthMatcher.match(month)) + { + gc.set(2, month - 1); + int maxDayOfMonth = DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + for (int dayOfMonth = gc.get(5); dayOfMonth <= maxDayOfMonth; ++dayOfMonth) + { + if (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, isLeapYear) : dayOfMonthMatcher.match(dayOfMonth)) + { + gc.set(5, dayOfMonth); + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + if (dayOfWeekMatcher.match(dayOfWeek)) + { + for (int hour = gc.get(11); hour <= HOUR_MAX_VALUE; ++hour) + { + if (hourMatcher.match(hour)) + { + gc.set(11, hour); + for (int minute = gc.get(MONTH_MAX_VALUE); minute <= MINUTE_MAX_VALUE; ++minute) + { + if (!minuteMatcher.match(minute)) + { + continue; + } + + gc.set(MONTH_MAX_VALUE, minute); + long next0 = gc.getTimeInMillis(); + if (next0 <= millis) + { + continue; + } + + if ((next != -1L) && (next0 >= next)) + { + break SEARCH; + } + + next = next0; + if (_hourAdderRnd.containsKey(i)) + { + next += Rnd.get(_hourAdderRnd.get(i)) * 60 * 60 * 1000L; + } + + if (!_minuteAdderRnd.containsKey(i)) + { + break SEARCH; + } + + next += Rnd.get(_minuteAdderRnd.get(i)) * 60 * 1000L; + break SEARCH; + } + } + gc.set(MONTH_MAX_VALUE, 0); + } + } + } + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + } + gc.set(5, 1); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + gc.set(2, 0); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + gc.roll(1, true); + } + + while (true); + if ((next <= millis) || ((result != -1L) && (next >= result))) + { + continue; + } + + result = next; + } + return result; + } + + @Override + public long next(long millis) + { + return next(TimeZone.getDefault(), millis); + } + + @Override + public String toString() + { + return _asString; + } + + private static int parseAlias(String value, String[] aliases, int offset) throws Exception + { + for (int i = 0; i < aliases.length; ++i) + { + if (!aliases[i].equalsIgnoreCase(value)) + { + continue; + } + return offset + i; + } + throw new Exception("invalid alias \"" + value + "\""); + } + + private static class DayOfMonthValueMatcher extends IntArrayValueMatcher + { + private static final int[] lastDays = new int[] + { + DAY_OF_MONTH_MAX_VALUE, + 28, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE + }; + + public DayOfMonthValueMatcher(List integers) + { + super(integers); + } + + public boolean match(int value, int month, boolean isLeapYear) + { + return super.match(value) || ((value > 27) && match(32) && DayOfMonthValueMatcher.isLastDayOfMonth(value, month, isLeapYear)); + } + + public static int getLastDayOfMonth(int month, boolean isLeapYear) + { + if (isLeapYear && (month == 2)) + { + return 29; + } + + return lastDays[month - 1]; + } + + public static boolean isLastDayOfMonth(int value, int month, boolean isLeapYear) + { + return value == DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + } + } + + private static class IntArrayValueMatcher implements ValueMatcher + { + private final int[] values; + + public IntArrayValueMatcher(List integers) + { + int size = integers.size(); + values = new int[size]; + for (int i = 0; i < size; ++i) + { + try + { + values[i] = integers.get(i); + continue; + } + catch (Exception e) + { + throw new IllegalArgumentException(e.getMessage()); + } + } + } + + @Override + public boolean match(int value) + { + for (int i = 0; i < values.length; ++i) + { + if (values[i] != value) + { + continue; + } + return true; + } + return false; + } + } + + private static class AlwaysTrueValueMatcher implements ValueMatcher + { + private AlwaysTrueValueMatcher() + { + } + + @Override + public boolean match(int value) + { + return true; + } + } + + private static interface ValueMatcher + { + public boolean match(int var1); + } + + private static class DayOfWeekValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + }; + + public DayOfWeekValueParser() + { + super(DAY_OF_WEEK_MIN_VALUE, DAY_OF_WEEK_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value) % DAY_OF_WEEK_MAX_VALUE; + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 0); + } + } + } + + private static class MonthValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "jan", + "feb", + "mar", + "apr", + "may", + "jun", + "jul", + "aug", + "sep", + "oct", + "nov", + "dec" + }; + + public MonthValueParser() + { + super(MONTH_MIN_VALUE, MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value); + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 1); + } + } + } + + private static class DayOfMonthValueParser extends SimpleValueParser + { + public DayOfMonthValueParser() + { + super(DAY_OF_MONTH_MIN_VALUE, DAY_OF_MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + if (value.equalsIgnoreCase("L")) + { + return 32; + } + return super.parse(value); + } + } + + private static class HourValueParser extends SimpleValueParser + { + public HourValueParser() + { + super(HOUR_MIN_VALUE, HOUR_MAX_VALUE); + } + } + + private static class MinuteValueParser extends SimpleValueParser + { + public MinuteValueParser() + { + super(MINUTE_MIN_VALUE, MINUTE_MAX_VALUE); + } + } + + private static class SimpleValueParser implements ValueParser + { + protected int _minValue; + protected int _maxValue; + + public SimpleValueParser(int minValue, int maxValue) + { + _minValue = minValue; + _maxValue = maxValue; + } + + @Override + public int parse(String value) throws Exception + { + int i; + try + { + i = Integer.parseInt(value); + } + catch (NumberFormatException e) + { + throw new Exception("invalid integer value"); + } + if ((i < _minValue) || (i > _maxValue)) + { + throw new Exception("value out of range"); + } + return i; + } + + @Override + public int getMinValue() + { + return _minValue; + } + + @Override + public int getMaxValue() + { + return _maxValue; + } + } + + private static interface ValueParser + { + public int parse(String var1) throws Exception; + + public int getMinValue(); + + public int getMaxValue(); + } +} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/GameServer.java index c750ec1eb9..281e350412 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/GameServer.java @@ -66,7 +66,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemGroupsData; import org.l2jmobius.gameserver.data.xml.EnchantItemHPBonusData; import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -382,8 +381,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/Shutdown.java index 585b663269..f222a68ba7 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/Shutdown.java @@ -29,7 +29,6 @@ import org.l2jmobius.gameserver.data.SchemeBufferTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -453,8 +452,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java deleted file mode 100644 index fff7561e47..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosResult -{ - TIE, - WIN, - LOSE -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index a49acb2a54..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CategoryType; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_ENDED); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_LEVEL_85_OR_ABOVE_MAY_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - canRegister = false; - } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANT_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_SIEGE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); - resetDailyMissionRewards(); resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); - onResetAttendanceRewards(); + resetDailyMissionRewards(); + resetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -83,8 +103,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -102,8 +121,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -150,12 +210,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -260,7 +319,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index 4f663f1e96..4835e884e6 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index 4eada88274..20a9bc5ad5 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1022,7 +1022,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5036,15 +5036,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java index 4b09eca1d7..4bc65f3e09 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1131,4 +1131,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 706de8a46c..eb939e2889 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -126,7 +126,6 @@ import org.l2jmobius.gameserver.instancemanager.RecipeManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -181,7 +180,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -189,7 +187,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -216,7 +213,6 @@ import org.l2jmobius.gameserver.model.fishing.Fishing; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -690,10 +686,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -720,7 +712,8 @@ public class PlayerInstance extends Playable private BroochJewel _activeShappireJewel = null; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -2886,11 +2879,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4826,10 +4815,6 @@ public class PlayerInstance extends Playable if (pk != null) { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -4990,7 +4975,7 @@ public class PlayerInstance extends Playable private void onDieDropItem(Creature killer) { - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return; } @@ -5317,7 +5302,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8027,7 +8012,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8088,22 +8073,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return getTeam() != attacker.getTeam(); } // Check if the attacker is a Playable @@ -9281,12 +9257,12 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) + if (_inOlympiadMode) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; return false; } - if (isOnEvent()) // custom event message + if (isOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11089,12 +11065,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -12863,16 +12833,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -12971,21 +12931,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13045,13 +12990,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13065,66 +13003,40 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13686,63 +13598,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index a30002000f..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,668 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_STARTED_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_WILL_START_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 3ed2685a6f..94eee3bae6 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERING_FOR_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/events/EventType.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/events/EventType.java index 04bf71da2c..a81d6adf6c 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/events/EventType.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/events/EventType.java @@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.model.events; import org.l2jmobius.commons.util.CommonUtil; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttack; @@ -203,9 +202,6 @@ public enum EventType // Olympiad events ON_OLYMPIAD_MATCH_RESULT(OnOlympiadMatchResult.class, void.class), - // Ceremony of Chaos events - ON_CEREMONY_OF_CHAOS_MATCH_RESULT(OnCeremonyOfChaosMatchResult.class, void.class), - // Playable events ON_PLAYABLE_EXP_CHANGED(OnPlayableExpChanged.class, void.class, TerminateReturn.class), diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java deleted file mode 100644 index fb0f2bb3da..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; - -import java.util.List; - -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; - -/** - * @author UnAfraid - */ -public class OnCeremonyOfChaosMatchResult implements IBaseEvent -{ - private final List _winners; - private final List _members; - - public OnCeremonyOfChaosMatchResult(List winners, List members) - { - _winners = winners; - _members = members; - } - - public List getWinners() - { - return _winners; - } - - public List getMembers() - { - return _members; - } - - @Override - public EventType getType() - { - return EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index b323a33915..29cce0c911 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_WITHIN_S1_MINUTE_S_YOU_WILL_BE_EXPELLED_FROM_THE_INSTANT_ZONE); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/Item.java index 5556524f8d..4e8384244c 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -146,7 +145,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -219,7 +218,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -854,9 +853,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -931,11 +930,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 3ff447bc23..ba7652e83c 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index b65afbc37b..7dd3e39882 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1122,7 +1122,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java index de1ae46d20..bd43120859 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java @@ -37,9 +37,6 @@ import org.l2jmobius.gameserver.network.clientpackets.attendance.RequestVipAtten import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestChangeAttributeCancel; import org.l2jmobius.gameserver.network.clientpackets.attributechange.RequestChangeAttributeItem; import org.l2jmobius.gameserver.network.clientpackets.attributechange.SendChangeAttributeTargetItem; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCancelCuriousHouse; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCuriousHouseHtml; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestJoinCuriousHouse; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyInfo; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyItem; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionCancel; @@ -273,13 +270,13 @@ public enum ExIncomingPackets implements IIncomingPackets REQUEST_MENTEE_WAITING_LIST(0xB8, RequestMenteeWaitingList::new, ConnectionState.IN_GAME), REQUEST_CLAN_ASK_JOIN_BY_NAME(0xB9, RequestClanAskJoinByName::new, ConnectionState.IN_GAME), REQUEST_IN_ZONE_WAITING_TIME(0xBA, RequestInzoneWaitingTime::new, ConnectionState.IN_GAME), - REQUEST_JOIN_CURIOUS_HOUSE(0xBB, RequestJoinCuriousHouse::new, ConnectionState.IN_GAME), - REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, RequestCancelCuriousHouse::new, ConnectionState.IN_GAME), + REQUEST_JOIN_CURIOUS_HOUSE(0xBB, null, ConnectionState.IN_GAME), + REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, null, ConnectionState.IN_GAME), REQUEST_LEAVE_CURIOUS_HOUSE(0xBD, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_LIST_CURIOUS_HOUSE(0xBE, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_CURIOUS_HOUSE(0xBF, null, ConnectionState.IN_GAME), REQUEST_LEAVE_OBSERVING_CURIOUS_HOUSE(0xC0, null, ConnectionState.IN_GAME), - REQUEST_CURIOUS_HOUSE_HTML(0xC1, RequestCuriousHouseHtml::new, ConnectionState.IN_GAME), + REQUEST_CURIOUS_HOUSE_HTML(0xC1, null, ConnectionState.IN_GAME), REQUEST_CURIOUS_HOUSE_RECORD(0xC2, null, ConnectionState.IN_GAME), EX_SYSSTRING(0xC3, null, ConnectionState.IN_GAME), REQUEST_EX_TRY_TO_PUT_SHAPE_SHIFTING_TARGET_ITEM(0xC4, RequestExTryToPutShapeShiftingTargetItem::new, ConnectionState.IN_GAME), diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 20aecb2b4e..2707db8b00 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -44,7 +44,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -420,11 +419,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 6ec63191f5..fe866ac5d9 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index b0676e562d..c2cb56b495 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -162,12 +161,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java deleted file mode 100644 index ce871f6a18..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestCancelCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MINUTES_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java deleted file mode 100644 index a4e6f04627..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Sdw - */ -public class RequestCuriousHouseHtml implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java deleted file mode 100644 index f0c221d875..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestJoinCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 9171a63f56..f2f1428fad 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -24,8 +24,6 @@ import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -121,8 +119,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -265,7 +261,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points return true; diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java deleted file mode 100644 index 372432ef02..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseEnter implements IClientOutgoingPacket -{ - public static final ExCuriousHouseEnter STATIC_PACKET = new ExCuriousHouseEnter(); - - private ExCuriousHouseEnter() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_ENTER.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java deleted file mode 100644 index 50e1e74725..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseLeave implements IClientOutgoingPacket -{ - public static final ExCuriousHouseLeave STATIC_PACKET = new ExCuriousHouseLeave(); - - private ExCuriousHouseLeave() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_LEAVE.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java deleted file mode 100644 index d26eee8d89..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import java.util.Collection; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseMemberList implements IClientOutgoingPacket -{ - private final int _id; - private final int _maxPlayers; - private final Collection _players; - - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) - { - _id = id; - _maxPlayers = maxPlayers; - _players = players; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_MEMBER_LIST.writeId(packet); - - packet.writeD(_id); - packet.writeD(_maxPlayers); - packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) - { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } - } - return true; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java deleted file mode 100644 index 14dca9be4a..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseObserveMode implements IClientOutgoingPacket -{ - public static final ExCuriousHouseObserveMode STATIC_ENABLED = new ExCuriousHouseObserveMode(0); - public static final ExCuriousHouseObserveMode STATIC_DISABLED = new ExCuriousHouseObserveMode(1); - - private final int _spectating; - - private ExCuriousHouseObserveMode(int spectating) - { - _spectating = spectating; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_OBSERVE_MODE.writeId(packet); - packet.writeC(_spectating); - return true; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java deleted file mode 100644 index b71caa5f14..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseRemainTime implements IClientOutgoingPacket -{ - private final int _time; - - public ExCuriousHouseRemainTime(int time) - { - _time = time; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_REMAIN_TIME.writeId(packet); - packet.writeD(_time); - - return true; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java deleted file mode 100644 index 1f09c4de0d..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseResult implements IClientOutgoingPacket -{ - private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; - - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) - { - _result = result; - _event = event; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); - packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> - { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); - return true; - } -} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java deleted file mode 100644 index abf627ab72..0000000000 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseState implements IClientOutgoingPacket -{ - public static final ExCuriousHouseState IDLE_PACKET = new ExCuriousHouseState(0); - public static final ExCuriousHouseState REGISTRATION_PACKET = new ExCuriousHouseState(1); - public static final ExCuriousHouseState PREPARE_PACKET = new ExCuriousHouseState(2); - public static final ExCuriousHouseState STARTING_PACKET = new ExCuriousHouseState(3); - - private final int _state; - - public ExCuriousHouseState(int state) - { - _state = state; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_STATE.writeId(packet); - packet.writeD(_state); - return true; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java index 2ee70b560d..5e4c984dac 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java @@ -19,9 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets.dailymission; import java.time.LocalDate; import java.util.Collection; import java.util.Collections; -import java.util.function.Function; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; @@ -29,28 +29,28 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import it.sauronsoftware.cron4j.Predictor; - /** * @author Sdw */ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket { - final PlayerInstance _player; - private final Collection _rewards; - private static final Function _remainTime = pattern -> (new Predictor(pattern).nextMatchingTime() - Chronos.currentTimeMillis()) / 1000; + private static final SchedulingPattern DAILY_REUSE_PATTERN = new SchedulingPattern("30 6 * * *"); + private static final SchedulingPattern WEEKLY_REUSE_PATTERN = new SchedulingPattern("30 6 * * 1"); + private static final SchedulingPattern MONTHLY_REUSE_PATTERN = new SchedulingPattern("30 6 1 * *"); - private final long _dayRemainTime; - private final long _weekRemainTime; - private final long _monthRemainTime; + private final PlayerInstance _player; + private final Collection _rewards; + private final int _dayRemainTime; + private final int _weekRemainTime; + private final int _monthRemainTime; public ExOneDayReceiveRewardList(PlayerInstance player, boolean sendRewards) { _player = player; _rewards = sendRewards ? DailyMissionData.getInstance().getDailyMissionData(player) : Collections.emptyList(); - _dayRemainTime = _remainTime.apply("30 6 * * *"); - _weekRemainTime = _remainTime.apply("30 6 * * 1"); - _monthRemainTime = _remainTime.apply("30 6 1 * *"); + _dayRemainTime = (int) ((DAILY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _weekRemainTime = (int) ((WEEKLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _monthRemainTime = (int) ((MONTHLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); } @Override @@ -63,9 +63,9 @@ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket OutgoingPackets.EX_ONE_DAY_RECEIVE_REWARD_LIST.writeId(packet); - packet.writeD((int) _dayRemainTime); - packet.writeD((int) _weekRemainTime); - packet.writeD((int) _monthRemainTime); + packet.writeD(_dayRemainTime); + packet.writeD(_weekRemainTime); + packet.writeD(_monthRemainTime); packet.writeC(0x17); packet.writeD(_player.getClassId().getId()); packet.writeD(LocalDate.now().getDayOfWeek().ordinal()); // Day of week diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/.classpath b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/.classpath +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/AdminCommands.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index 7a24ad3e15..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/Elpies.txt b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/Rabbits.txt b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/Race.txt b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 922243cba8..7b4c3017fb 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -156,7 +156,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -191,7 +191,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -249,7 +249,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -299,7 +299,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 992cd26fed..efb6423d4d 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -151,7 +151,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -176,13 +176,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -229,7 +229,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -266,6 +266,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -456,7 +457,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -483,7 +484,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -536,7 +537,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -583,7 +584,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -610,7 +611,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -641,7 +642,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -728,7 +729,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -780,7 +781,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -885,7 +886,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java index 5739f9ce23..fcedb44015 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java @@ -21,7 +21,6 @@ import java.util.logging.Logger; import org.l2jmobius.gameserver.handler.DailyMissionHandler; import handlers.dailymissionhandlers.BossDailyMissionHandler; -import handlers.dailymissionhandlers.CeremonyOfChaosDailyMissionHandler; import handlers.dailymissionhandlers.FishingDailyMissionHandler; import handlers.dailymissionhandlers.LevelDailyMissionHandler; import handlers.dailymissionhandlers.LoginMonthDailyMissionHandler; @@ -47,7 +46,6 @@ public class DailyMissionMasterHandler DailyMissionHandler.getInstance().registerHandler("quest", QuestDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("olympiad", OlympiadDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("siege", SiegeDailyMissionHandler::new); - DailyMissionHandler.getInstance().registerHandler("ceremonyofchaos", CeremonyOfChaosDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("boss", BossDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("monster", MonsterDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("fishing", FishingDailyMissionHandler::new); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/MasterHandler.java index 4d8eec7dfc..ba52173c5b 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -143,7 +142,6 @@ import handlers.bypasshandlers.Buy; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -417,7 +415,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -486,7 +483,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java deleted file mode 100644 index d03e8e82f6..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.dailymissionhandlers; - -import org.l2jmobius.gameserver.enums.DailyMissionStatus; -import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler; -import org.l2jmobius.gameserver.model.DailyMissionDataHolder; -import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.Containers; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosDailyMissionHandler extends AbstractDailyMissionHandler -{ - private final int _amount; - - public CeremonyOfChaosDailyMissionHandler(DailyMissionDataHolder holder) - { - super(holder); - _amount = holder.getRequiredCompletions(); - } - - @Override - public void init() - { - Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT, (OnCeremonyOfChaosMatchResult event) -> onCeremonyOfChaosMatchResult(event), this)); - } - - @Override - public boolean isAvailable(PlayerInstance player) - { - final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); - if (entry != null) - { - switch (entry.getStatus()) - { - case NOT_AVAILABLE: // Initial state - { - if (entry.getProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - storePlayerEntry(entry); - } - break; - } - case AVAILABLE: - { - return true; - } - } - } - return false; - } - - private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) - { - event.getMembers().forEach(member -> - { - final DailyMissionPlayerEntry entry = getPlayerEntry(member.getObjectId(), true); - if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE) - { - if (entry.increaseProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - } - storePlayerEntry(entry); - } - }); - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/01000-01099.xml index 5348b6f1e1..8b25ac4d0a 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/01000-01099.xml @@ -610,7 +610,7 @@ - + @@ -634,7 +634,7 @@ - + @@ -729,7 +729,7 @@ - + diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/01500-01599.xml index 5ab67a751f..93d1ebb9db 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/01500-01599.xml @@ -449,7 +449,7 @@ - + @@ -473,7 +473,7 @@ - + diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/05200-05299.xml index 4c2e8f41af..4ece4bffb3 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/05200-05299.xml @@ -320,7 +320,7 @@ - + @@ -341,7 +341,7 @@ - + @@ -362,7 +362,7 @@ - + @@ -383,7 +383,7 @@ - + @@ -404,7 +404,7 @@ - + @@ -425,7 +425,7 @@ - + @@ -446,7 +446,7 @@ - + @@ -467,7 +467,7 @@ - + @@ -488,7 +488,7 @@ - + @@ -509,7 +509,7 @@ - + @@ -530,7 +530,7 @@ - + @@ -551,7 +551,7 @@ - + @@ -572,7 +572,7 @@ - + @@ -593,7 +593,7 @@ - + @@ -614,7 +614,7 @@ - + diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/05500-05599.xml index 33b40eb517..3704b9aaff 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/05500-05599.xml @@ -736,7 +736,7 @@ - + @@ -755,7 +755,7 @@ - + diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/06400-06499.xml index 15f6164e37..573d023470 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/29600-29699.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/29600-29699.xml index 9d7766d32c..b086c825ef 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/29600-29699.xml +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/29600-29699.xml @@ -1112,7 +1112,7 @@ - + @@ -1138,7 +1138,7 @@ - + diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/49400-49499.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/49400-49499.xml index 0a0f592427..73e16caab1 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/49400-49499.xml +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/49400-49499.xml @@ -1392,7 +1392,7 @@ - + diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/93600-93699.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/93600-93699.xml index 3e18c55641..04f4b3fe09 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/93600-93699.xml +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/93600-93699.xml @@ -821,7 +821,7 @@ - + @@ -844,7 +844,7 @@ - + @@ -867,7 +867,7 @@ - + @@ -890,7 +890,7 @@ - + @@ -913,7 +913,7 @@ - + @@ -936,7 +936,7 @@ - + @@ -959,7 +959,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -1005,7 +1005,7 @@ - + @@ -1028,7 +1028,7 @@ - + @@ -1051,7 +1051,7 @@ - + @@ -1074,7 +1074,7 @@ - + @@ -1097,7 +1097,7 @@ - + @@ -1120,7 +1120,7 @@ - + diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/93900-93999.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/93900-93999.xml index c86fc3052c..13a167d341 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/93900-93999.xml +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/93900-93999.xml @@ -924,7 +924,7 @@ - + diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/94300-94399.xml b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/94300-94399.xml index 2079351ade..702449e103 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/94300-94399.xml +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/stats/items/94300-94399.xml @@ -212,7 +212,7 @@ - + diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/time/AddPattern.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/time/AddPattern.java new file mode 100644 index 0000000000..893a279fd4 --- /dev/null +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/time/AddPattern.java @@ -0,0 +1,119 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class AddPattern implements NextTime +{ + private int _monthInc = -1; + private int _monthSet = -1; + private int _dayOfMonthInc = -1; + private int _dayOfMonthSet = -1; + private int _hourOfDayInc = -1; + private int _hourOfDaySet = -1; + private int _minuteInc = -1; + private int _minuteSet = -1; + + public AddPattern(String pattern) + { + String[] timeparts; + String[] parts = pattern.split("\\s+"); + if (parts.length == 2) + { + String datemodstr; + String datepartsstr = parts[0]; + String[] dateparts = datepartsstr.split(":"); + if (dateparts.length == 2) + { + if (dateparts[0].startsWith("+")) + { + _monthInc = Integer.parseInt(dateparts[0].substring(1)); + } + else + { + _monthSet = Integer.parseInt(dateparts[0]) - 1; + } + } + if ((datemodstr = dateparts[dateparts.length - 1]).startsWith("+")) + { + _dayOfMonthInc = Integer.parseInt(datemodstr.substring(1)); + } + else + { + _dayOfMonthSet = Integer.parseInt(datemodstr); + } + } + if ((timeparts = parts[parts.length - 1].split(":"))[0].startsWith("+")) + { + _hourOfDayInc = Integer.parseInt(timeparts[0].substring(1)); + } + else + { + _hourOfDaySet = Integer.parseInt(timeparts[0]); + } + if (timeparts[1].startsWith("+")) + { + _minuteInc = Integer.parseInt(timeparts[1].substring(1)); + } + else + { + _minuteSet = Integer.parseInt(timeparts[1]); + } + } + + @Override + public long next(long millis) + { + final GregorianCalendar gc = new GregorianCalendar(TimeZone.getDefault()); + gc.setTimeInMillis(millis); + if (_monthInc >= 0) + { + gc.add(2, _monthInc); + } + if (_monthSet >= 0) + { + gc.set(2, _monthSet); + } + if (_dayOfMonthInc >= 0) + { + gc.add(5, _dayOfMonthInc); + } + if (_dayOfMonthSet >= 0) + { + gc.set(5, _dayOfMonthSet); + } + if (_hourOfDayInc >= 0) + { + gc.add(11, _hourOfDayInc); + } + if (_hourOfDaySet >= 0) + { + gc.set(11, _hourOfDaySet); + } + if (_minuteInc >= 0) + { + gc.add(12, _minuteInc); + } + if (_minuteSet >= 0) + { + gc.set(12, _minuteSet); + } + return gc.getTimeInMillis(); + } +} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/time/NextTime.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/time/NextTime.java new file mode 100644 index 0000000000..d08d90164d --- /dev/null +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/time/NextTime.java @@ -0,0 +1,22 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +public interface NextTime +{ + public long next(long var1); +} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/time/SchedulingPattern.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/time/SchedulingPattern.java new file mode 100644 index 0000000000..d9fdd655f3 --- /dev/null +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/commons/time/SchedulingPattern.java @@ -0,0 +1,841 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.ArrayList; +import java.util.GregorianCalendar; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.TimeZone; +import java.util.TreeMap; + +import org.l2jmobius.commons.util.Rnd; + +public class SchedulingPattern implements NextTime +{ + private static final int MINUTE_MIN_VALUE = 0; + private static final int MINUTE_MAX_VALUE = 59; + private static final int HOUR_MIN_VALUE = 0; + private static final int HOUR_MAX_VALUE = 23; + private static final int DAY_OF_MONTH_MIN_VALUE = 1; + private static final int DAY_OF_MONTH_MAX_VALUE = 31; + private static final int MONTH_MIN_VALUE = 1; + private static final int MONTH_MAX_VALUE = 12; + private static final int DAY_OF_WEEK_MIN_VALUE = 0; + private static final int DAY_OF_WEEK_MAX_VALUE = 7; + private static final ValueParser MINUTE_VALUE_PARSER = new MinuteValueParser(); + private static final ValueParser HOUR_VALUE_PARSER = new HourValueParser(); + private static final ValueParser DAY_OF_MONTH_VALUE_PARSER = new DayOfMonthValueParser(); + private static final ValueParser MONTH_VALUE_PARSER = new MonthValueParser(); + private static final ValueParser DAY_OF_WEEK_VALUE_PARSER = new DayOfWeekValueParser(); + private final String _asString; + protected List _minuteMatchers = new ArrayList<>(); + protected List _hourMatchers = new ArrayList<>(); + protected List _dayOfMonthMatchers = new ArrayList<>(); + protected List _monthMatchers = new ArrayList<>(); + protected List _dayOfWeekMatchers = new ArrayList<>(); + protected int _matcherSize = 0; + protected Map _hourAdder = new TreeMap<>(); + protected Map _hourAdderRnd = new TreeMap<>(); + protected Map _dayOfYearAdder = new TreeMap<>(); + protected Map _minuteAdderRnd = new TreeMap<>(); + protected Map _weekOfYearAdder = new TreeMap<>(); + + public static boolean validate(String schedulingPattern) + { + try + { + new SchedulingPattern(schedulingPattern); + } + catch (RuntimeException e) + { + return false; + } + return true; + } + + public SchedulingPattern(String pattern) throws RuntimeException + { + _asString = pattern; + StringTokenizer st1 = new StringTokenizer(pattern, "|"); + if (st1.countTokens() < 1) + { + throw new RuntimeException("invalid pattern: \"" + pattern + "\""); + } + + while (st1.hasMoreTokens()) + { + int i; + String localPattern = st1.nextToken(); + StringTokenizer st2 = new StringTokenizer(localPattern, " \t"); + int tokCnt = st2.countTokens(); + if ((tokCnt < 5) || (tokCnt > 6)) + { + throw new RuntimeException("invalid pattern: \"" + localPattern + "\""); + } + + try + { + String minutePattern = st2.nextToken(); + String[] minutePatternParts = minutePattern.split(":"); + if (minutePatternParts.length > 1) + { + for (i = 0; i < (minutePatternParts.length - 1); ++i) + { + if (minutePatternParts[i].length() <= 1) + { + continue; + } + + if (minutePatternParts[i].startsWith("~")) + { + _minuteAdderRnd.put(_matcherSize, Integer.parseInt(minutePatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + minutePatternParts[i] + "\""); + } + minutePattern = minutePatternParts[minutePatternParts.length - 1]; + } + _minuteMatchers.add(buildValueMatcher(minutePattern, MINUTE_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing minutes field: " + e.getMessage() + "."); + } + + try + { + String hourPattern = st2.nextToken(); + String[] hourPatternParts = hourPattern.split(":"); + if (hourPatternParts.length > 1) + { + for (i = 0; i < (hourPatternParts.length - 1); ++i) + { + if (hourPatternParts[i].length() <= 1) + { + continue; + } + + if (hourPatternParts[i].startsWith("+")) + { + _hourAdder.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + if (hourPatternParts[i].startsWith("~")) + { + _hourAdderRnd.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + hourPatternParts[i] + "\""); + } + hourPattern = hourPatternParts[hourPatternParts.length - 1]; + } + _hourMatchers.add(buildValueMatcher(hourPattern, HOUR_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing hours field: " + e.getMessage() + "."); + } + + try + { + String dayOfMonthPattern = st2.nextToken(); + String[] dayOfMonthPatternParts = dayOfMonthPattern.split(":"); + if (dayOfMonthPatternParts.length > 1) + { + for (i = 0; i < (dayOfMonthPatternParts.length - 1); ++i) + { + if (dayOfMonthPatternParts[i].length() <= 1) + { + continue; + } + + if (dayOfMonthPatternParts[i].startsWith("+")) + { + _dayOfYearAdder.put(_matcherSize, Integer.parseInt(dayOfMonthPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown day modifier \"" + dayOfMonthPatternParts[i] + "\""); + } + dayOfMonthPattern = dayOfMonthPatternParts[dayOfMonthPatternParts.length - 1]; + } + _dayOfMonthMatchers.add(buildValueMatcher(dayOfMonthPattern, DAY_OF_MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of month field: " + e.getMessage() + "."); + } + + try + { + _monthMatchers.add(buildValueMatcher(st2.nextToken(), MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing months field: " + e.getMessage() + "."); + } + + try + { + _dayOfWeekMatchers.add(buildValueMatcher(st2.nextToken(), DAY_OF_WEEK_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + + if (st2.hasMoreTokens()) + { + try + { + String weekOfYearAdderText = st2.nextToken(); + if (weekOfYearAdderText.charAt(0) != '+') + { + throw new RuntimeException("Unknown week of year addition in pattern \"" + localPattern + "\"."); + } + weekOfYearAdderText = weekOfYearAdderText.substring(1); + _weekOfYearAdder.put(_matcherSize, Integer.parseInt(weekOfYearAdderText)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + } + ++_matcherSize; + } + } + + private ValueMatcher buildValueMatcher(String str, ValueParser parser) throws Exception + { + if ((str.length() == 1) && str.equals("*")) + { + return new AlwaysTrueValueMatcher(); + } + + ArrayList values = new ArrayList<>(); + StringTokenizer st = new StringTokenizer(str, ","); + while (st.hasMoreTokens()) + { + List local; + String element = st.nextToken(); + try + { + local = parseListElement(element, parser); + } + catch (Exception e) + { + throw new Exception("invalid field \"" + str + "\", invalid element \"" + element + "\", " + e.getMessage()); + } + + for (Integer value : local) + { + if (values.contains(value)) + { + continue; + } + + values.add(value); + } + } + + if (values.size() == 0) + { + throw new Exception("invalid field \"" + str + "\""); + } + + if (parser == DAY_OF_MONTH_VALUE_PARSER) + { + return new DayOfMonthValueMatcher(values); + } + + return new IntArrayValueMatcher(values); + } + + private List parseListElement(String str, ValueParser parser) throws Exception + { + List values; + StringTokenizer st = new StringTokenizer(str, "/"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + try + { + values = parseRange(st.nextToken(), parser); + } + catch (Exception e) + { + throw new Exception("invalid range, " + e.getMessage()); + } + + if (size == 2) + { + int div; + String dStr = st.nextToken(); + + try + { + div = Integer.parseInt(dStr); + } + catch (NumberFormatException e) + { + throw new Exception("invalid divisor \"" + dStr + "\""); + } + + if (div < 1) + { + throw new Exception("non positive divisor \"" + div + "\""); + } + + ArrayList values2 = new ArrayList<>(); + for (int i = 0; i < values.size(); i += div) + { + values2.add(values.get(i)); + } + + return values2; + } + return values; + } + + private List parseRange(String str, ValueParser parser) throws Exception + { + int v2; + int v1; + if (str.equals("*")) + { + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + ArrayList values = new ArrayList<>(); + for (int i = min; i <= max; ++i) + { + values.add(i); + } + return values; + } + + StringTokenizer st = new StringTokenizer(str, "-"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + String v1Str = st.nextToken(); + try + { + v1 = parser.parse(v1Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v1Str + "\", " + e.getMessage()); + } + + if (size == 1) + { + ArrayList values = new ArrayList<>(); + values.add(v1); + return values; + } + + String v2Str = st.nextToken(); + try + { + v2 = parser.parse(v2Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v2Str + "\", " + e.getMessage()); + } + + ArrayList values = new ArrayList<>(); + if (v1 < v2) + { + for (int i = v1; i <= v2; ++i) + { + values.add(i); + } + } + else if (v1 > v2) + { + int i; + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + for (i = v1; i <= max; ++i) + { + values.add(i); + } + for (i = min; i <= v2; ++i) + { + values.add(i); + } + } + else + { + values.add(v1); + } + + return values; + } + + public boolean match(TimeZone timezone, long millis) + { + GregorianCalendar gc = new GregorianCalendar(timezone); + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + for (int i = 0; i < _matcherSize; ++i) + { + boolean eval = false; + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, -_weekOfYearAdder.get(i).intValue()); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, -_dayOfYearAdder.get(i).intValue()); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, -_hourAdder.get(i).intValue()); + } + int minute = gc.get(MONTH_MAX_VALUE); + int hour = gc.get(11); + int dayOfMonth = gc.get(5); + int month = gc.get(2) + 1; + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + int year = gc.get(1); + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + @SuppressWarnings("unused") + boolean bl = minuteMatcher.match(minute) && hourMatcher.match(hour) && (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, gc.isLeapYear(year)) : dayOfMonthMatcher.match(dayOfMonth)) && monthMatcher.match(month) && dayOfWeekMatcher.match(dayOfWeek) ? true : (eval = false); + if (!eval) + { + continue; + } + return true; + } + return false; + } + + public boolean match(long millis) + { + return match(TimeZone.getDefault(), millis); + } + + public long next(TimeZone timezone, long millis) + { + long result = -1L; + GregorianCalendar gc = new GregorianCalendar(timezone); + for (int i = 0; i < _matcherSize; ++i) + { + long next = -1L; + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, _weekOfYearAdder.get(i)); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, _dayOfYearAdder.get(i)); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, _hourAdder.get(i)); + } + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + SEARCH: do + { + int year = gc.get(1); + boolean isLeapYear = gc.isLeapYear(year); + for (int month = gc.get(2) + 1; month <= MONTH_MAX_VALUE; ++month) + { + if (monthMatcher.match(month)) + { + gc.set(2, month - 1); + int maxDayOfMonth = DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + for (int dayOfMonth = gc.get(5); dayOfMonth <= maxDayOfMonth; ++dayOfMonth) + { + if (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, isLeapYear) : dayOfMonthMatcher.match(dayOfMonth)) + { + gc.set(5, dayOfMonth); + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + if (dayOfWeekMatcher.match(dayOfWeek)) + { + for (int hour = gc.get(11); hour <= HOUR_MAX_VALUE; ++hour) + { + if (hourMatcher.match(hour)) + { + gc.set(11, hour); + for (int minute = gc.get(MONTH_MAX_VALUE); minute <= MINUTE_MAX_VALUE; ++minute) + { + if (!minuteMatcher.match(minute)) + { + continue; + } + + gc.set(MONTH_MAX_VALUE, minute); + long next0 = gc.getTimeInMillis(); + if (next0 <= millis) + { + continue; + } + + if ((next != -1L) && (next0 >= next)) + { + break SEARCH; + } + + next = next0; + if (_hourAdderRnd.containsKey(i)) + { + next += Rnd.get(_hourAdderRnd.get(i)) * 60 * 60 * 1000L; + } + + if (!_minuteAdderRnd.containsKey(i)) + { + break SEARCH; + } + + next += Rnd.get(_minuteAdderRnd.get(i)) * 60 * 1000L; + break SEARCH; + } + } + gc.set(MONTH_MAX_VALUE, 0); + } + } + } + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + } + gc.set(5, 1); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + gc.set(2, 0); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + gc.roll(1, true); + } + + while (true); + if ((next <= millis) || ((result != -1L) && (next >= result))) + { + continue; + } + + result = next; + } + return result; + } + + @Override + public long next(long millis) + { + return next(TimeZone.getDefault(), millis); + } + + @Override + public String toString() + { + return _asString; + } + + private static int parseAlias(String value, String[] aliases, int offset) throws Exception + { + for (int i = 0; i < aliases.length; ++i) + { + if (!aliases[i].equalsIgnoreCase(value)) + { + continue; + } + return offset + i; + } + throw new Exception("invalid alias \"" + value + "\""); + } + + private static class DayOfMonthValueMatcher extends IntArrayValueMatcher + { + private static final int[] lastDays = new int[] + { + DAY_OF_MONTH_MAX_VALUE, + 28, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE + }; + + public DayOfMonthValueMatcher(List integers) + { + super(integers); + } + + public boolean match(int value, int month, boolean isLeapYear) + { + return super.match(value) || ((value > 27) && match(32) && DayOfMonthValueMatcher.isLastDayOfMonth(value, month, isLeapYear)); + } + + public static int getLastDayOfMonth(int month, boolean isLeapYear) + { + if (isLeapYear && (month == 2)) + { + return 29; + } + + return lastDays[month - 1]; + } + + public static boolean isLastDayOfMonth(int value, int month, boolean isLeapYear) + { + return value == DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + } + } + + private static class IntArrayValueMatcher implements ValueMatcher + { + private final int[] values; + + public IntArrayValueMatcher(List integers) + { + int size = integers.size(); + values = new int[size]; + for (int i = 0; i < size; ++i) + { + try + { + values[i] = integers.get(i); + continue; + } + catch (Exception e) + { + throw new IllegalArgumentException(e.getMessage()); + } + } + } + + @Override + public boolean match(int value) + { + for (int i = 0; i < values.length; ++i) + { + if (values[i] != value) + { + continue; + } + return true; + } + return false; + } + } + + private static class AlwaysTrueValueMatcher implements ValueMatcher + { + private AlwaysTrueValueMatcher() + { + } + + @Override + public boolean match(int value) + { + return true; + } + } + + private static interface ValueMatcher + { + public boolean match(int var1); + } + + private static class DayOfWeekValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + }; + + public DayOfWeekValueParser() + { + super(DAY_OF_WEEK_MIN_VALUE, DAY_OF_WEEK_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value) % DAY_OF_WEEK_MAX_VALUE; + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 0); + } + } + } + + private static class MonthValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "jan", + "feb", + "mar", + "apr", + "may", + "jun", + "jul", + "aug", + "sep", + "oct", + "nov", + "dec" + }; + + public MonthValueParser() + { + super(MONTH_MIN_VALUE, MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value); + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 1); + } + } + } + + private static class DayOfMonthValueParser extends SimpleValueParser + { + public DayOfMonthValueParser() + { + super(DAY_OF_MONTH_MIN_VALUE, DAY_OF_MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + if (value.equalsIgnoreCase("L")) + { + return 32; + } + return super.parse(value); + } + } + + private static class HourValueParser extends SimpleValueParser + { + public HourValueParser() + { + super(HOUR_MIN_VALUE, HOUR_MAX_VALUE); + } + } + + private static class MinuteValueParser extends SimpleValueParser + { + public MinuteValueParser() + { + super(MINUTE_MIN_VALUE, MINUTE_MAX_VALUE); + } + } + + private static class SimpleValueParser implements ValueParser + { + protected int _minValue; + protected int _maxValue; + + public SimpleValueParser(int minValue, int maxValue) + { + _minValue = minValue; + _maxValue = maxValue; + } + + @Override + public int parse(String value) throws Exception + { + int i; + try + { + i = Integer.parseInt(value); + } + catch (NumberFormatException e) + { + throw new Exception("invalid integer value"); + } + if ((i < _minValue) || (i > _maxValue)) + { + throw new Exception("value out of range"); + } + return i; + } + + @Override + public int getMinValue() + { + return _minValue; + } + + @Override + public int getMaxValue() + { + return _maxValue; + } + } + + private static interface ValueParser + { + public int parse(String var1) throws Exception; + + public int getMinValue(); + + public int getMaxValue(); + } +} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/GameServer.java index 82f9c76267..e0faeeabb8 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/GameServer.java @@ -70,7 +70,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; import org.l2jmobius.gameserver.data.xml.EquipmentUpgradeData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -413,8 +412,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/Shutdown.java index 585b663269..f222a68ba7 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/Shutdown.java @@ -29,7 +29,6 @@ import org.l2jmobius.gameserver.data.SchemeBufferTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -453,8 +452,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java deleted file mode 100644 index fff7561e47..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosResult -{ - TIE, - WIN, - LOSE -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 9b15d1ebbc..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,457 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.THE_REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.THE_REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_IS_OVER); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_OF_LV_85_CAN_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - // else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - // { - // sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - // canRegister = false; - // } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANCE_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_BATTLE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_BATTLE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + resetTimedHuntingZonesWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); - resetDailyMissionRewards(); resetDailySkills(); - resetRecommends(); resetWorldChatPoints(); + resetRecommends(); resetTrainingCamp(); - resetVitality(); + resetTimedHuntingZones(); + resetDailyMissionRewards(); + resetAttendanceRewards(); resetVip(); - onResetTimedHuntingZones(); - onResetAttendanceRewards(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -94,73 +110,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - private void resetVitality() - { - if (!Config.ENABLE_VITALITY) - { - return; - } - - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.updateVitalityPoints(Config.STARTING_VITALITY_POINTS, false, false); - for (SubClassHolder subclass : player.getSubClasses().values()) - { - subclass.setVitalityPoints(Math.min(PlayerStat.MAX_VITALITY_POINTS, subclass.getVitalityPoints() + Config.STARTING_VITALITY_POINTS)); - } - } - - try (Connection con = DatabaseFactory.getConnection()) - { - Map currPoints = new HashMap<>(); - try (PreparedStatement st = con.prepareStatement("SELECT charId, vitality_points FROM character_subclasses")) - { - ResultSet rs = st.executeQuery(); - while (rs.next()) - { - currPoints.put(rs.getInt(1), rs.getInt(2)); - } - } - try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = ? WHERE charId = ?")) - { - for (Entry entry : currPoints.entrySet()) - { - st.setInt(1, Math.min(PlayerStat.MAX_VITALITY_POINTS, entry.getValue() + Config.STARTING_VITALITY_POINTS)); - st.setInt(2, entry.getKey()); - st.addBatch(); - } - st.executeBatch(); - } - - currPoints.clear(); - try (PreparedStatement st = con.prepareStatement("SELECT charId, vitality_points FROM characters")) - { - ResultSet rs = st.executeQuery(); - while (rs.next()) - { - currPoints.put(rs.getInt(1), rs.getInt(2)); - } - } - try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = ? WHERE charId = ?")) - { - for (Entry entry : currPoints.entrySet()) - { - st.setInt(1, Math.min(PlayerStat.MAX_VITALITY_POINTS, entry.getValue() + Config.STARTING_VITALITY_POINTS)); - st.setInt(2, entry.getKey()); - st.addBatch(); - } - st.executeBatch(); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error while updating Vitality", e); - } - LOGGER.info("Vitality resetted"); - } - - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -178,8 +128,49 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -226,12 +217,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -354,8 +344,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - @ScheduleTarget - public void onResetTimedHuntingZones() + public void resetTimedHuntingZones() { for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) { @@ -389,8 +378,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Special Hunting Zones has been resetted."); } - @ScheduleTarget - public void onResetWeeklyTimedHuntingZones() + public void resetTimedHuntingZonesWeekly() { for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) { @@ -424,7 +412,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Weekly Special Hunting Zones has been resetted."); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index f55e00d36a..8978469456 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java index 99a3af0e55..08a8ded386 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1026,7 +1026,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5079,15 +5079,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Summon.java index 7e4ea7fe1d..16f99c1a6d 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1151,4 +1151,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index dc2a60f6d3..8f1f66eca4 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -137,7 +137,6 @@ import org.l2jmobius.gameserver.instancemanager.RecipeManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -193,7 +192,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -201,7 +199,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -235,7 +232,6 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; import org.l2jmobius.gameserver.model.holders.PetEvolveHolder; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; @@ -746,10 +742,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -772,7 +764,8 @@ public class PlayerInstance extends Playable private int _lastAmmunitionId = 0; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -2897,11 +2890,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4845,10 +4834,6 @@ public class PlayerInstance extends Playable { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); setTotalDeaths(getTotalDeaths() + 1); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5031,7 +5016,7 @@ public class PlayerInstance extends Playable private Collection onDieDropItem(Creature killer) { final List droppedItems = new ArrayList<>(); - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return droppedItems; } @@ -5366,7 +5351,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8161,7 +8146,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8222,22 +8207,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return getTeam() != attacker.getTeam(); } // Check if the attacker is a Playable @@ -9413,12 +9389,12 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_ALREADY_ENGAGED_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) + if (_inOlympiadMode) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS; return false; } - if (isOnEvent()) // custom event message + if (isOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_HE_OR_SHE_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11243,12 +11219,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -13170,16 +13140,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13278,21 +13238,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13352,13 +13297,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13372,66 +13310,40 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -13989,63 +13901,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index 6d78270eb6..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,668 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_BEGUN_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THE_DUEL_HAS_ENDED_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_BEGINS_IN_S1_SEC); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 3ed2685a6f..94eee3bae6 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERING_FOR_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/events/EventType.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/events/EventType.java index 64db5ebeca..cea88eef7f 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/events/EventType.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/events/EventType.java @@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.model.events; import org.l2jmobius.commons.util.CommonUtil; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttack; @@ -206,9 +205,6 @@ public enum EventType // Olympiad events ON_OLYMPIAD_MATCH_RESULT(OnOlympiadMatchResult.class, void.class), - // Ceremony of Chaos events - ON_CEREMONY_OF_CHAOS_MATCH_RESULT(OnCeremonyOfChaosMatchResult.class, void.class), - // Playable events ON_PLAYABLE_EXP_CHANGED(OnPlayableExpChanged.class, void.class, TerminateReturn.class), diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java deleted file mode 100644 index fb0f2bb3da..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; - -import java.util.List; - -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; - -/** - * @author UnAfraid - */ -public class OnCeremonyOfChaosMatchResult implements IBaseEvent -{ - private final List _winners; - private final List _members; - - public OnCeremonyOfChaosMatchResult(List winners, List members) - { - _winners = winners; - _members = members; - } - - public List getWinners() - { - return _winners; - } - - public List getMembers() - { - return _members; - } - - @Override - public EventType getType() - { - return EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 29db6957ab..2c28c096bb 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_IN_S1_MIN_YOU_WILL_BE_TELEPORTED_OUT_OF_THE_INSTANCE_ZONE); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/items/Item.java index 10cd6a106a..d352cd042c 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -149,7 +148,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -224,7 +223,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -867,9 +866,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -944,11 +943,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 6f9fd9c00c..91beecf5ff 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 6570c0d3ed..e5ba502fc8 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1127,7 +1127,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java index 925c97ec01..138a2c652e 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java @@ -42,9 +42,6 @@ import org.l2jmobius.gameserver.network.clientpackets.autoplay.ExRequestActivate import org.l2jmobius.gameserver.network.clientpackets.blessing.RequestBlessOptionCancel; import org.l2jmobius.gameserver.network.clientpackets.blessing.RequestBlessOptionEnchant; import org.l2jmobius.gameserver.network.clientpackets.blessing.RequestBlessOptionPutItem; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCancelCuriousHouse; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCuriousHouseHtml; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestJoinCuriousHouse; import org.l2jmobius.gameserver.network.clientpackets.classchange.ExRequestClassChange; import org.l2jmobius.gameserver.network.clientpackets.classchange.ExRequestClassChangeVerifying; import org.l2jmobius.gameserver.network.clientpackets.commission.RequestCommissionBuyInfo; @@ -332,13 +329,13 @@ public enum ExIncomingPackets implements IIncomingPackets REQUEST_MENTEE_WAITING_LIST(0xB8, RequestMenteeWaitingList::new, ConnectionState.IN_GAME), REQUEST_CLAN_ASK_JOIN_BY_NAME(0xB9, RequestClanAskJoinByName::new, ConnectionState.IN_GAME), REQUEST_IN_ZONE_WAITING_TIME(0xBA, RequestInzoneWaitingTime::new, ConnectionState.IN_GAME), - REQUEST_JOIN_CURIOUS_HOUSE(0xBB, RequestJoinCuriousHouse::new, ConnectionState.IN_GAME), - REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, RequestCancelCuriousHouse::new, ConnectionState.IN_GAME), + REQUEST_JOIN_CURIOUS_HOUSE(0xBB, null, ConnectionState.IN_GAME), + REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, null, ConnectionState.IN_GAME), REQUEST_LEAVE_CURIOUS_HOUSE(0xBD, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_LIST_CURIOUS_HOUSE(0xBE, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_CURIOUS_HOUSE(0xBF, null, ConnectionState.IN_GAME), REQUEST_LEAVE_OBSERVING_CURIOUS_HOUSE(0xC0, null, ConnectionState.IN_GAME), - REQUEST_CURIOUS_HOUSE_HTML(0xC1, RequestCuriousHouseHtml::new, ConnectionState.IN_GAME), + REQUEST_CURIOUS_HOUSE_HTML(0xC1, null, ConnectionState.IN_GAME), REQUEST_CURIOUS_HOUSE_RECORD(0xC2, null, ConnectionState.IN_GAME), EX_SYSSTRING(0xC3, null, ConnectionState.IN_GAME), REQUEST_EX_TRY_TO_PUT_SHAPE_SHIFTING_TARGET_ITEM(0xC4, RequestExTryToPutShapeShiftingTargetItem::new, ConnectionState.IN_GAME), diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index ebfd255a36..d08a472455 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -44,7 +44,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -432,11 +431,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 061521f203..8d64270335 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 2c51a98476..30bde486bc 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -166,12 +165,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java deleted file mode 100644 index be0c427c2d..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestCancelCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MIN_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java deleted file mode 100644 index a4e6f04627..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Sdw - */ -public class RequestCuriousHouseHtml implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java deleted file mode 100644 index f0c221d875..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestJoinCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 42636f5d2f..b13e910ebc 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -26,8 +26,6 @@ import org.l2jmobius.gameserver.instancemanager.RankManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -123,8 +121,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -288,7 +284,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java deleted file mode 100644 index 372432ef02..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseEnter implements IClientOutgoingPacket -{ - public static final ExCuriousHouseEnter STATIC_PACKET = new ExCuriousHouseEnter(); - - private ExCuriousHouseEnter() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_ENTER.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java deleted file mode 100644 index 50e1e74725..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseLeave implements IClientOutgoingPacket -{ - public static final ExCuriousHouseLeave STATIC_PACKET = new ExCuriousHouseLeave(); - - private ExCuriousHouseLeave() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_LEAVE.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java deleted file mode 100644 index d26eee8d89..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import java.util.Collection; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseMemberList implements IClientOutgoingPacket -{ - private final int _id; - private final int _maxPlayers; - private final Collection _players; - - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) - { - _id = id; - _maxPlayers = maxPlayers; - _players = players; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_MEMBER_LIST.writeId(packet); - - packet.writeD(_id); - packet.writeD(_maxPlayers); - packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) - { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } - } - return true; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java deleted file mode 100644 index 14dca9be4a..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseObserveMode implements IClientOutgoingPacket -{ - public static final ExCuriousHouseObserveMode STATIC_ENABLED = new ExCuriousHouseObserveMode(0); - public static final ExCuriousHouseObserveMode STATIC_DISABLED = new ExCuriousHouseObserveMode(1); - - private final int _spectating; - - private ExCuriousHouseObserveMode(int spectating) - { - _spectating = spectating; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_OBSERVE_MODE.writeId(packet); - packet.writeC(_spectating); - return true; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java deleted file mode 100644 index b71caa5f14..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseRemainTime implements IClientOutgoingPacket -{ - private final int _time; - - public ExCuriousHouseRemainTime(int time) - { - _time = time; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_REMAIN_TIME.writeId(packet); - packet.writeD(_time); - - return true; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java deleted file mode 100644 index 1f09c4de0d..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseResult implements IClientOutgoingPacket -{ - private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; - - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) - { - _result = result; - _event = event; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); - packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> - { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); - return true; - } -} diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java deleted file mode 100644 index abf627ab72..0000000000 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseState implements IClientOutgoingPacket -{ - public static final ExCuriousHouseState IDLE_PACKET = new ExCuriousHouseState(0); - public static final ExCuriousHouseState REGISTRATION_PACKET = new ExCuriousHouseState(1); - public static final ExCuriousHouseState PREPARE_PACKET = new ExCuriousHouseState(2); - public static final ExCuriousHouseState STARTING_PACKET = new ExCuriousHouseState(3); - - private final int _state; - - public ExCuriousHouseState(int state) - { - _state = state; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_STATE.writeId(packet); - packet.writeD(_state); - return true; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java index 32f4a05d7b..55d1c4bcfd 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java @@ -19,9 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets.dailymission; import java.time.LocalDate; import java.util.Collection; import java.util.Collections; -import java.util.function.Function; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; @@ -29,28 +29,28 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import it.sauronsoftware.cron4j.Predictor; - /** * @author Sdw */ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket { - final PlayerInstance _player; - private final Collection _rewards; - private static final Function _remainTime = pattern -> (new Predictor(pattern).nextMatchingTime() - Chronos.currentTimeMillis()) / 1000; + private static final SchedulingPattern DAILY_REUSE_PATTERN = new SchedulingPattern("30 6 * * *"); + private static final SchedulingPattern WEEKLY_REUSE_PATTERN = new SchedulingPattern("30 6 * * 1"); + private static final SchedulingPattern MONTHLY_REUSE_PATTERN = new SchedulingPattern("30 6 1 * *"); - private final long _dayRemainTime; - private final long _weekRemainTime; - private final long _monthRemainTime; + private final PlayerInstance _player; + private final Collection _rewards; + private final int _dayRemainTime; + private final int _weekRemainTime; + private final int _monthRemainTime; public ExOneDayReceiveRewardList(PlayerInstance player, boolean sendRewards) { _player = player; _rewards = sendRewards ? DailyMissionData.getInstance().getDailyMissionData(player) : Collections.emptyList(); - _dayRemainTime = _remainTime.apply("30 6 * * *"); - _weekRemainTime = _remainTime.apply("30 6 * * 1"); - _monthRemainTime = _remainTime.apply("30 6 1 * *"); + _dayRemainTime = (int) ((DAILY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _weekRemainTime = (int) ((WEEKLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _monthRemainTime = (int) ((MONTHLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); } @Override @@ -63,9 +63,9 @@ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket OutgoingPackets.EX_ONE_DAY_RECEIVE_REWARD_LIST.writeId(packet); - packet.writeD((int) _dayRemainTime); - packet.writeD((int) _weekRemainTime); - packet.writeD((int) _monthRemainTime); + packet.writeD(_dayRemainTime); + packet.writeD(_weekRemainTime); + packet.writeD(_monthRemainTime); packet.writeC(0x17); packet.writeD(_player.getClassId().getId()); packet.writeD(LocalDate.now().getDayOfWeek().ordinal()); // Day of week diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/.classpath b/L2J_Mobius_Essence_5.2_FrostLord/.classpath index 8d6bb1b024..a4d82b44e8 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/.classpath +++ b/L2J_Mobius_Essence_5.2_FrostLord/.classpath @@ -5,7 +5,6 @@ - diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/AdminCommands.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/AdminCommands.xml index c7a1a461b6..9b610a1b81 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/AdminCommands.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/AdminCommands.xml @@ -222,32 +222,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/ClanHallAuction.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/ClanHallAuction.xml deleted file mode 100644 index 1ef53637ee..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/ClanHallAuction.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - startAuction - endAuction - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/DailyTasks.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/DailyTasks.xml deleted file mode 100644 index 7a24ad3e15..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/DailyTasks.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/Elpies.txt b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/Elpies.txt deleted file mode 100644 index 2fb8a72306..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/Elpies.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/Rabbits.txt b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/Rabbits.txt deleted file mode 100644 index f4a59b3018..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/Rabbits.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/Race.txt b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/Race.txt deleted file mode 100644 index 7ef1d86347..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/Race.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/TeamVsTeam.txt b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/TeamVsTeam.txt deleted file mode 100644 index 9b02fa4d43..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/events/TeamVsTeam.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/html/mods/EventEngine/Participating.htm b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/html/mods/EventEngine/Participating.htm deleted file mode 100644 index 4724f31677..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/html/mods/EventEngine/Participating.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/html/mods/EventEngine/Participation.htm b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/html/mods/EventEngine/Participation.htm deleted file mode 100644 index 93445c87d9..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/html/mods/EventEngine/Participation.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - - - - - - -
%eventName% by %eventCreator%
%eventInfo%
-
- \ No newline at end of file diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java index 4a327b2c88..1a8298e2c8 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/ai/others/ClanHallAuctioneer/ClanHallAuctioneer.java @@ -156,7 +156,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI htmltext = htmltext.replace("%id%", String.valueOf(clanHallAuction.getClanHallId())); htmltext = htmltext.replace("%minBid%", String.valueOf(clanHallAuction.getHighestBid())); htmltext = htmltext.replace("%myBid%", String.valueOf(clanHallAuction.getClanBid(clan))); - htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + clanHallAuction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + htmltext = htmltext.replace("%auctionEnd%", builder.appendPattern("dd/MM/yyyy HH").appendLiteral(" hour ").appendPattern("mm").appendLiteral(" minutes").toFormatter().format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); } } else @@ -191,7 +191,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI final ClanHall clanHall = ClanHallData.getInstance().getClanHallById(clanHallAuction.getClanHallId()); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); @@ -249,7 +249,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI { final ClanHallAuction clanHallAuction = ClanHallAuctionManager.getInstance().getClanHallAuctionById(clanHallId); final Clan owner = clanHall.getOwner(); - final long remainingTime = clanHallAuction.getRemaingTime(); + final long remainingTime = ClanHallAuctionManager.getInstance().getRemainingTime(); final Instant endTime = Instant.ofEpochMilli(Chronos.currentTimeMillis() + remainingTime); final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId()); @@ -299,7 +299,7 @@ public class ClanHallAuctioneer extends AbstractNpcAI sb.append("\">&%"); sb.append(clanHall.getResidenceId()); sb.append(";[0]"); - sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + auction.getRemaingTime()).atZone(ZoneId.systemDefault()))); + sb.append(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Instant.ofEpochMilli(Chronos.currentTimeMillis() + ClanHallAuctionManager.getInstance().getRemainingTime()).atZone(ZoneId.systemDefault()))); sb.append(""); sb.append(auction.getHighestBid()); sb.append(""); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java index 992cd26fed..efb6423d4d 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/custom/events/TeamVsTeam/TvT.java @@ -151,7 +151,7 @@ public class TvT extends Event { PLAYER_LIST.add(player); PLAYER_SCORES.put(player, 0); - player.setOnCustomEvent(true); + player.setRegisteredOnEvent(true); addLogoutListener(player); htmltext = "registration-success.html"; } @@ -176,13 +176,13 @@ public class TvT extends Event PLAYER_LIST.remove(player); PLAYER_SCORES.remove(player); removeListeners(player); - player.setOnCustomEvent(false); + player.setRegisteredOnEvent(false); htmltext = "registration-canceled.html"; break; } case "BuffHeal": { - if (player.isOnCustomEvent() || player.isGM()) + if (player.isOnEvent() || player.isGM()) { if (player.isInCombat()) { @@ -229,7 +229,7 @@ public class TvT extends Event for (PlayerInstance participant : PLAYER_LIST) { removeListeners(participant); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } EVENT_ACTIVE = false; return null; @@ -266,6 +266,7 @@ public class TvT extends Event team = true; } addDeathListener(participant); + participant.setOnEvent(true); } // Make Blue CC. if (BLUE_TEAM.size() > 1) @@ -456,7 +457,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setOnEvent(false); participant.leaveParty(); } // Destroy world. @@ -483,7 +484,7 @@ public class TvT extends Event } case "ResurrectPlayer": { - if (player.isDead() && player.isOnCustomEvent()) + if (player.isDead() && player.isOnEvent()) { if (BLUE_TEAM.contains(player)) { @@ -536,7 +537,7 @@ public class TvT extends Event PLAYER_SCORES.remove(player); BLUE_TEAM.remove(player); RED_TEAM.remove(player); - player.setOnCustomEvent(false); + player.setOnEvent(false); removeListeners(player); player.sendMessage("You have been kicked for been inactive."); if (PVP_WORLD != null) @@ -583,7 +584,7 @@ public class TvT extends Event @Override public String onEnterZone(Creature creature, ZoneType zone) { - if (creature.isPlayable() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayable() && creature.getActingPlayer().isOnEvent()) { // Kick enemy players. if ((zone == BLUE_PEACE_ZONE) && (creature.getTeam() == Team.RED)) @@ -610,7 +611,7 @@ public class TvT extends Event @Override public String onExitZone(Creature creature, ZoneType zone) { - if (creature.isPlayer() && creature.getActingPlayer().isOnCustomEvent()) + if (creature.isPlayer() && creature.getActingPlayer().isOnEvent()) { final PlayerInstance player = creature.getActingPlayer(); cancelQuestTimer("KickPlayer" + creature.getObjectId(), null, player); @@ -641,7 +642,7 @@ public class TvT extends Event player.sendMessage("Your level is too high to participate."); return false; } - if (player.isOnEvent() || (player.getBlockCheckerArena() > -1)) + if (player.isRegisteredOnEvent() || (player.getBlockCheckerArena() > -1)) { player.sendMessage("You are already registered on an event."); return false; @@ -728,7 +729,7 @@ public class TvT extends Event private void addLogoutListener(PlayerInstance player) { - player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> OnPlayerLogout(event), this)); + player.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LOGOUT, (OnPlayerLogout event) -> onPlayerLogout(event), this)); } private void addDeathListener(PlayerInstance player) @@ -780,7 +781,7 @@ public class TvT extends Event } @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - private void OnPlayerLogout(OnPlayerLogout event) + private void onPlayerLogout(OnPlayerLogout event) { final PlayerInstance player = event.getPlayer(); // Remove player from lists. @@ -885,7 +886,7 @@ public class TvT extends Event { removeListeners(participant); participant.setTeam(Team.NONE); - participant.setOnCustomEvent(false); + participant.setRegisteredOnEvent(false); } if (PVP_WORLD != null) { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java index 5739f9ce23..fcedb44015 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/DailyMissionMasterHandler.java @@ -21,7 +21,6 @@ import java.util.logging.Logger; import org.l2jmobius.gameserver.handler.DailyMissionHandler; import handlers.dailymissionhandlers.BossDailyMissionHandler; -import handlers.dailymissionhandlers.CeremonyOfChaosDailyMissionHandler; import handlers.dailymissionhandlers.FishingDailyMissionHandler; import handlers.dailymissionhandlers.LevelDailyMissionHandler; import handlers.dailymissionhandlers.LoginMonthDailyMissionHandler; @@ -47,7 +46,6 @@ public class DailyMissionMasterHandler DailyMissionHandler.getInstance().registerHandler("quest", QuestDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("olympiad", OlympiadDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("siege", SiegeDailyMissionHandler::new); - DailyMissionHandler.getInstance().registerHandler("ceremonyofchaos", CeremonyOfChaosDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("boss", BossDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("monster", MonsterDailyMissionHandler::new); DailyMissionHandler.getInstance().registerHandler("fishing", FishingDailyMissionHandler::new); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/MasterHandler.java index 4d8eec7dfc..ba52173c5b 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/MasterHandler.java @@ -76,7 +76,6 @@ import handlers.admincommandhandlers.AdminEditChar; import handlers.admincommandhandlers.AdminEffects; import handlers.admincommandhandlers.AdminElement; import handlers.admincommandhandlers.AdminEnchant; -import handlers.admincommandhandlers.AdminEventEngine; import handlers.admincommandhandlers.AdminEvents; import handlers.admincommandhandlers.AdminExpSp; import handlers.admincommandhandlers.AdminFakePlayers; @@ -143,7 +142,6 @@ import handlers.bypasshandlers.Buy; import handlers.bypasshandlers.ChatLink; import handlers.bypasshandlers.ClanWarehouse; import handlers.bypasshandlers.EnsoulWindow; -import handlers.bypasshandlers.EventEngine; import handlers.bypasshandlers.FindPvP; import handlers.bypasshandlers.Freight; import handlers.bypasshandlers.ItemAuctionLink; @@ -417,7 +415,6 @@ public class MasterHandler AdminEffects.class, AdminElement.class, AdminEnchant.class, - AdminEventEngine.class, AdminEvents.class, AdminExpSp.class, AdminFakePlayers.class, @@ -486,7 +483,6 @@ public class MasterHandler ChatLink.class, ClanWarehouse.class, EnsoulWindow.class, - EventEngine.class, FindPvP.class, Freight.class, ItemAuctionLink.class, diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java index 4b75e2bfb8..5823646cf7 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/actionhandlers/NpcAction.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.handler.IActionHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; @@ -118,25 +117,19 @@ public class NpcAction implements IActionHandler } // Open a chat window on client with the text of the Npc - if (npc.hasVariables() && npc.getVariables().getBoolean("eventmob", false)) + if (npc.hasListener(EventType.ON_NPC_QUEST_START)) { - GameEvent.showEventHtml(player, String.valueOf(target.getObjectId())); + player.setLastQuestNpcObject(target.getObjectId()); + } + if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) + { + EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); } else { - if (npc.hasListener(EventType.ON_NPC_QUEST_START)) - { - player.setLastQuestNpcObject(target.getObjectId()); - } - if (npc.hasListener(EventType.ON_NPC_FIRST_TALK)) - { - EventDispatcher.getInstance().notifyEventAsync(new OnNpcFirstTalk(npc, player), npc); - } - else - { - npc.showChatWindow(player); - } + npc.showChatWindow(player); } + if (Config.PLAYER_MOVEMENT_BLOCK_TIME > 0) { player.updateNotMoveUntil(); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java deleted file mode 100644 index 2d7e669ac4..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/admincommandhandlers/AdminEventEngine.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.admincommandhandlers; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.StringTokenizer; - -import org.l2jmobius.Config; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.xml.AdminData; -import org.l2jmobius.gameserver.handler.IAdminCommandHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent.EventState; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.util.Broadcast; - -/** - * This class handles following admin commands: - admin = shows menu - * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ - */ -public class AdminEventEngine implements IAdminCommandHandler -{ - private static final String[] ADMIN_COMMANDS = - { - "admin_event", - "admin_event_new", - "admin_event_choose", - "admin_event_store", - "admin_event_set", - "admin_event_change_teams_number", - "admin_event_announce", - "admin_event_panel", - "admin_event_control_begin", - "admin_event_control_teleport", - "admin_add", - "admin_event_see", - "admin_event_del", - "admin_delete_buffer", - "admin_event_control_sit", - "admin_event_name", - "admin_event_control_kill", - "admin_event_control_res", - "admin_event_control_transform", - "admin_event_control_untransform", - "admin_event_control_prize", - "admin_event_control_chatban", - "admin_event_control_kick", - "admin_event_control_finish" - }; - - private static String tempBuffer = ""; - private static String tempName = ""; - private static boolean npcsDeleted = false; - - @Override - public boolean useAdminCommand(String command, PlayerInstance activeChar) - { - StringTokenizer st = new StringTokenizer(command); - final String actualCommand = st.nextToken(); - try - { - if (actualCommand.equals("admin_event")) - { - if (GameEvent.eventState != EventState.OFF) - { - showEventControl(activeChar); - } - else - { - showMainPage(activeChar); - } - } - - else if (actualCommand.equals("admin_event_new")) - { - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_add")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event info. - tempBuffer += command.substring(10); - showNewEventPage(activeChar); - - } - else if (actualCommand.startsWith("admin_event_see")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - try - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(Config.DATAPACK_ROOT + "/data/events/" + eventName))); - final BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); - adminReply.setFile(null, "data/html/mods/EventEngine/Participation.htm"); - adminReply.replace("%eventName%", eventName); - adminReply.replace("%eventCreator%", inbr.readLine()); - adminReply.replace("%eventInfo%", inbr.readLine()); - adminReply.replace("npc_%objectId%_event_participate", "admin_event"); // Weird, but nice hack, isnt it? :) - adminReply.replace("button value=\"Participate\"", "button value=\"Back\""); - activeChar.sendPacket(adminReply); - inbr.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else if (actualCommand.startsWith("admin_event_del")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - final String eventName = command.substring(16); - final File file = new File(Config.DATAPACK_ROOT + "/data/events/" + eventName); - file.delete(); - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_name")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - tempName += command.substring(17); - showNewEventPage(activeChar); - } - else if (actualCommand.equalsIgnoreCase("admin_delete_buffer")) - { - tempBuffer = ""; - showNewEventPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_store")) - { - try - { - final FileOutputStream file = new FileOutputStream(new File(Config.DATAPACK_ROOT, "data/events/" + tempName)); - final PrintStream p = new PrintStream(file); - p.println(activeChar.getName()); - p.println(tempBuffer); - file.close(); - p.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - - tempBuffer = ""; - tempName = ""; - showMainPage(activeChar); - } - else if (actualCommand.startsWith("admin_event_set")) - { - // There is an exception here for not using the ST. We use spaces (ST delim) for the event name. - GameEvent._eventName = command.substring(16); - showEventParameters(activeChar, 2); - } - else if (actualCommand.startsWith("admin_event_change_teams_number")) - { - showEventParameters(activeChar, Integer.parseInt(st.nextToken())); - } - else if (actualCommand.startsWith("admin_event_panel")) - { - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_announce")) - { - GameEvent._npcId = Integer.parseInt(st.nextToken()); - GameEvent._teamsNumber = Integer.parseInt(st.nextToken()); - String temp = " "; - String temp2 = ""; - while (st.hasMoreElements()) - { - temp += st.nextToken() + " "; - } - - st = new StringTokenizer(temp, "-"); - Integer i = 1; - - while (st.hasMoreElements()) - { - temp2 = st.nextToken(); - if (!temp2.equals(" ")) - { - GameEvent._teamNames.put(i++, temp2.substring(1, temp2.length() - 1)); - } - } - - activeChar.sendMessage(GameEvent.startEventParticipation()); - Broadcast.toAllOnlinePlayers(activeChar.getName() + " has started an event. You will find a participation NPC somewhere around you."); - - final PlaySound snd = new PlaySound(1, "B03_F", 0, 0, 0, 0, 0); - activeChar.sendPacket(snd); - activeChar.broadcastPacket(snd); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
The event " + GameEvent._eventName + " has been announced, now you can type //event_panel to see the event panel control

"; - adminReply.setHtml(replyMSG); - activeChar.sendPacket(adminReply); - } - else if (actualCommand.startsWith("admin_event_control_begin")) - { - // Starts the event and sends a message of the result - activeChar.sendMessage(GameEvent.startEvent()); - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_finish")) - { - // Finishes the event and sends a message of the result - activeChar.sendMessage(GameEvent.finishEvent()); - } - else if (actualCommand.startsWith("admin_event_control_teleport")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - final int teamId = Integer.parseInt(st.nextToken()); - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - player.setTitle(GameEvent._teamNames.get(teamId)); - player.teleToLocation(activeChar.getLocation(), true, activeChar.getInstanceWorld()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_sit")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - // Integer.parseInt(st.nextToken()) == teamId - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if (player.getEventStatus() == null) - { - continue; - } - - player.getEventStatus().setSitForced(!player.getEventStatus().isSitForced()); - if (player.getEventStatus().isSitForced()) - { - player.sitDown(); - } - else - { - player.standUp(); - } - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kill")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.reduceCurrentHp(player.getMaxHp() + player.getMaxCp() + 1, activeChar, null); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_res")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - if ((player == null) || !player.isDead()) - { - continue; - } - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_transform")) - { - final int teamId = Integer.parseInt(st.nextToken()); - final int[] transIds = new int[st.countTokens()]; - int i = 0; - while (st.hasMoreElements()) // Every next ST should be a transform ID - { - transIds[i++] = Integer.parseInt(st.nextToken()); - } - - for (PlayerInstance player : GameEvent._teams.get(teamId)) - { - final int transId = transIds[Rnd.get(transIds.length)]; - if (!player.transform(transId, true)) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Unknow transformation id: " + transId); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_untransform")) - { - while (st.hasMoreElements()) // Every next ST should be a team number - { - for (PlayerInstance player : GameEvent._teams.get(Integer.parseInt(st.nextToken()))) - { - player.stopTransformation(true); - } - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_kick")) - { - if (st.hasMoreElements()) // If has next token, it should be player name. - { - while (st.hasMoreElements()) - { - final PlayerInstance player = World.getInstance().getPlayer(st.nextToken()); - if (player != null) - { - GameEvent.removeAndResetPlayer(player); - } - } - } - else if ((activeChar.getTarget() != null) && (activeChar.getTarget().isPlayer())) - { - GameEvent.removeAndResetPlayer((PlayerInstance) activeChar.getTarget()); - } - showEventControl(activeChar); - } - else if (actualCommand.startsWith("admin_event_control_prize")) - { - final int[] teamIds = new int[st.countTokens() - 2]; - int i = 0; - while ((st.countTokens() - 2) > 0) // The last 2 tokens are used for "n" and "item id" - { - teamIds[i++] = Integer.parseInt(st.nextToken()); - } - - final String[] n = st.nextToken().split("\\*"); - final int itemId = Integer.parseInt(st.nextToken()); - for (int teamId : teamIds) - { - rewardTeam(activeChar, teamId, Integer.parseInt(n[0]), itemId, n.length == 2 ? n[1] : ""); - } - showEventControl(activeChar); - } - } - catch (Exception e) - { - AdminData.getInstance().broadcastMessageToGMs("EventEngine: Error! Possible blank boxes while executing a command which requires a value in the box?"); - } - return true; - } - - @Override - public String[] getAdminCommandList() - { - return ADMIN_COMMANDS; - } - - private String showStoredEvents() - { - final File dir = new File(Config.DATAPACK_ROOT, "/data/events"); - if (dir.isFile()) - { - return "The directory '" + dir.getAbsolutePath() + "' is a file or is corrupted!
"; - } - - String note = ""; - if (!dir.exists()) - { - note = "The directory '" + dir.getAbsolutePath() + "' does not exist!
Trying to create it now...

"; - if (dir.mkdirs()) - { - note += "The directory '" + dir.getAbsolutePath() + "' has been created!
"; - } - else - { - note += "The directory '" + dir.getAbsolutePath() + "' hasn't been created!
"; - return note; - } - } - - final String[] files = dir.list(); - final StringBuilder result = new StringBuilder(files.length * 500); - result.append(""); - for (String fileName : files) - { - result.append(""); - } - - result.append("
"); - result.append(fileName); - result.append("
 
 
"); - - return note + result; - } - - private void showMainPage(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final String replyMSG = "[ L2J EVENT ENGINE ]
"); - if (tempBuffer.isEmpty()) - { - replyMSG.append("You can also use //add text to add text or //delete_buffer to remove the text."); - } - else - { - replyMSG.append(tempBuffer); - } - - replyMSG.append("
"); - - adminReply.setHtml(replyMSG.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventParameters(PlayerInstance activeChar, int teamnumbers) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ L2J EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

INFO: To start an event, you must first set the number of teams, then type their names in the boxes and finally type the NPC ID that will be the event manager (can be any existing npc) next to the \"Announce Event!\" button.
"); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); - sb.append("



"); - sb.append("Teams' names:
"); - for (int i = 1; (i - 1) < teamnumbers; i++) // Team names params - { - sb.append(""); - } - sb.append("
Team #"); - sb.append(i); - sb.append(" name:
"); - - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void showEventControl(PlayerInstance activeChar) - { - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - final StringBuilder sb = new StringBuilder(); - sb.append("[ EVENT ENGINE ]
Current event: "); - sb.append(GameEvent._eventName); - sb.append("

"); - sb.append("
Type the team ID(s) that will be affected by the commands. Commands with '*' work with only 1 team ID in the field, while '!' - none.
 
"); - if (!npcsDeleted) - { - sb.append(""); - } - - sb.append("
Destroys all event npcs so no more people can't participate now on
 
Teleports the specified team to your position
 
Sits/Stands up the team
 
Finish with the life of all the players in the selected team
 
Resurrect Team's members
 
Transforms the team into the transformation with the ID specified. Multiple IDs result in randomly chosen one for each player.
 
Untransforms the team
 
Num
ID
Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example
 
Kicks the specified player(s) from the event. Blank field kicks target.
 
Will finish the event teleporting back all the players
 
"); - adminReply.setHtml(sb.toString()); - activeChar.sendPacket(adminReply); - } - - private void rewardTeam(PlayerInstance activeChar, int team, int n, int id, String type) - { - int num = n; - for (PlayerInstance player : GameEvent._teams.get(team)) - { - if (type.equalsIgnoreCase("level")) - { - num = n * player.getLevel(); - } - else if (type.equalsIgnoreCase("kills") && (player.getEventStatus() != null)) - { - num = n * player.getEventStatus().getKills().size(); - } - else - { - num = n; - } - - player.addItem("Event", id, num, activeChar, true); - - final NpcHtmlMessage adminReply = new NpcHtmlMessage(0, 1); - adminReply.setHtml(" CONGRATULATIONS! You should have been rewarded. "); - player.sendPacket(adminReply); - } - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java deleted file mode 100644 index 081bbe2c2b..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/bypasshandlers/EventEngine.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.bypasshandlers; - -import java.util.logging.Level; - -import org.l2jmobius.gameserver.handler.IBypassHandler; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; -import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -public class EventEngine implements IBypassHandler -{ - private static final String[] COMMANDS = - { - "event_participate", - "event_unregister" - }; - - @Override - public boolean useBypass(String command, PlayerInstance player, Creature target) - { - if (!target.isNpc()) - { - return false; - } - - try - { - if (command.equalsIgnoreCase("event_participate")) - { - GameEvent.registerPlayer(player); - return true; - } - else if (command.equalsIgnoreCase("event_unregister")) - { - GameEvent.removeAndResetPlayer(player); - return true; - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); - } - return false; - } - - @Override - public String[] getBypassList() - { - return COMMANDS; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java deleted file mode 100644 index d03e8e82f6..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/dailymissionhandlers/CeremonyOfChaosDailyMissionHandler.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package handlers.dailymissionhandlers; - -import org.l2jmobius.gameserver.enums.DailyMissionStatus; -import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler; -import org.l2jmobius.gameserver.model.DailyMissionDataHolder; -import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.Containers; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosDailyMissionHandler extends AbstractDailyMissionHandler -{ - private final int _amount; - - public CeremonyOfChaosDailyMissionHandler(DailyMissionDataHolder holder) - { - super(holder); - _amount = holder.getRequiredCompletions(); - } - - @Override - public void init() - { - Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT, (OnCeremonyOfChaosMatchResult event) -> onCeremonyOfChaosMatchResult(event), this)); - } - - @Override - public boolean isAvailable(PlayerInstance player) - { - final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); - if (entry != null) - { - switch (entry.getStatus()) - { - case NOT_AVAILABLE: // Initial state - { - if (entry.getProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - storePlayerEntry(entry); - } - break; - } - case AVAILABLE: - { - return true; - } - } - } - return false; - } - - private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event) - { - event.getMembers().forEach(member -> - { - final DailyMissionPlayerEntry entry = getPlayerEntry(member.getObjectId(), true); - if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE) - { - if (entry.increaseProgress() >= _amount) - { - entry.setStatus(DailyMissionStatus.AVAILABLE); - } - storePlayerEntry(entry); - } - }); - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java index 69a319ab14..e871e36f2c 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriend.java @@ -79,7 +79,7 @@ public class NotFriend implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java index 9b51f9f573..28a3260b12 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/targethandlers/affectobject/NotFriendPc.java @@ -79,7 +79,7 @@ public class NotFriendPc implements IAffectObjectHandler } // Events. - if (player.isOnCustomEvent() && (player.getTeam() == target.getTeam())) + if (player.isOnEvent() && (player.getTeam() == target.getTeam())) { return false; } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/01000-01099.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/01000-01099.xml index 0140a386a0..9310c843b6 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/01000-01099.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/01000-01099.xml @@ -610,7 +610,7 @@ - + @@ -634,7 +634,7 @@ - + @@ -729,7 +729,7 @@ - + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/01500-01599.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/01500-01599.xml index 227944c2b9..3f6b120261 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/01500-01599.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/01500-01599.xml @@ -449,7 +449,7 @@ - + @@ -473,7 +473,7 @@ - + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/05200-05299.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/05200-05299.xml index bc454274bf..336c636ee2 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/05200-05299.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/05200-05299.xml @@ -320,7 +320,7 @@ - + @@ -341,7 +341,7 @@ - + @@ -362,7 +362,7 @@ - + @@ -383,7 +383,7 @@ - + @@ -404,7 +404,7 @@ - + @@ -425,7 +425,7 @@ - + @@ -446,7 +446,7 @@ - + @@ -467,7 +467,7 @@ - + @@ -488,7 +488,7 @@ - + @@ -509,7 +509,7 @@ - + @@ -530,7 +530,7 @@ - + @@ -551,7 +551,7 @@ - + @@ -572,7 +572,7 @@ - + @@ -593,7 +593,7 @@ - + @@ -614,7 +614,7 @@ - + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/05500-05599.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/05500-05599.xml index 15bc97efb7..baaf1d1dee 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/05500-05599.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/05500-05599.xml @@ -736,7 +736,7 @@ - + @@ -755,7 +755,7 @@ - + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/06400-06499.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/06400-06499.xml index 15f6164e37..573d023470 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/06400-06499.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/06400-06499.xml @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/29600-29699.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/29600-29699.xml index c63f6749c0..210a1f4c0e 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/29600-29699.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/29600-29699.xml @@ -1112,7 +1112,7 @@ - + @@ -1138,7 +1138,7 @@ - + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/49400-49499.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/49400-49499.xml index 9abe6128d6..45ab3b63aa 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/49400-49499.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/49400-49499.xml @@ -1392,7 +1392,7 @@ - + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/93600-93699.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/93600-93699.xml index 6e6a8e174a..19a6319cc6 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/93600-93699.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/93600-93699.xml @@ -821,7 +821,7 @@ - + @@ -844,7 +844,7 @@ - + @@ -867,7 +867,7 @@ - + @@ -890,7 +890,7 @@ - + @@ -913,7 +913,7 @@ - + @@ -936,7 +936,7 @@ - + @@ -959,7 +959,7 @@ - + @@ -982,7 +982,7 @@ - + @@ -1005,7 +1005,7 @@ - + @@ -1028,7 +1028,7 @@ - + @@ -1051,7 +1051,7 @@ - + @@ -1074,7 +1074,7 @@ - + @@ -1097,7 +1097,7 @@ - + @@ -1120,7 +1120,7 @@ - + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/93900-93999.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/93900-93999.xml index 559ae4d6d4..8ca9e7e56f 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/93900-93999.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/93900-93999.xml @@ -923,7 +923,7 @@ - + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/94300-94399.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/94300-94399.xml index 72f9bca41a..eabc5da064 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/94300-94399.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/94300-94399.xml @@ -232,7 +232,7 @@ - + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/95800-95899.xml b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/95800-95899.xml index b66967b3af..aeaf54f353 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/95800-95899.xml +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/stats/items/95800-95899.xml @@ -813,7 +813,7 @@ - + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/libs/cron4j-2.2.5-sources.jar b/L2J_Mobius_Essence_5.2_FrostLord/dist/libs/cron4j-2.2.5-sources.jar deleted file mode 100644 index 92e6ad0656..0000000000 Binary files a/L2J_Mobius_Essence_5.2_FrostLord/dist/libs/cron4j-2.2.5-sources.jar and /dev/null differ diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/libs/cron4j-2.2.5.jar b/L2J_Mobius_Essence_5.2_FrostLord/dist/libs/cron4j-2.2.5.jar deleted file mode 100644 index fe30013168..0000000000 Binary files a/L2J_Mobius_Essence_5.2_FrostLord/dist/libs/cron4j-2.2.5.jar and /dev/null differ diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/time/AddPattern.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/time/AddPattern.java new file mode 100644 index 0000000000..893a279fd4 --- /dev/null +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/time/AddPattern.java @@ -0,0 +1,119 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class AddPattern implements NextTime +{ + private int _monthInc = -1; + private int _monthSet = -1; + private int _dayOfMonthInc = -1; + private int _dayOfMonthSet = -1; + private int _hourOfDayInc = -1; + private int _hourOfDaySet = -1; + private int _minuteInc = -1; + private int _minuteSet = -1; + + public AddPattern(String pattern) + { + String[] timeparts; + String[] parts = pattern.split("\\s+"); + if (parts.length == 2) + { + String datemodstr; + String datepartsstr = parts[0]; + String[] dateparts = datepartsstr.split(":"); + if (dateparts.length == 2) + { + if (dateparts[0].startsWith("+")) + { + _monthInc = Integer.parseInt(dateparts[0].substring(1)); + } + else + { + _monthSet = Integer.parseInt(dateparts[0]) - 1; + } + } + if ((datemodstr = dateparts[dateparts.length - 1]).startsWith("+")) + { + _dayOfMonthInc = Integer.parseInt(datemodstr.substring(1)); + } + else + { + _dayOfMonthSet = Integer.parseInt(datemodstr); + } + } + if ((timeparts = parts[parts.length - 1].split(":"))[0].startsWith("+")) + { + _hourOfDayInc = Integer.parseInt(timeparts[0].substring(1)); + } + else + { + _hourOfDaySet = Integer.parseInt(timeparts[0]); + } + if (timeparts[1].startsWith("+")) + { + _minuteInc = Integer.parseInt(timeparts[1].substring(1)); + } + else + { + _minuteSet = Integer.parseInt(timeparts[1]); + } + } + + @Override + public long next(long millis) + { + final GregorianCalendar gc = new GregorianCalendar(TimeZone.getDefault()); + gc.setTimeInMillis(millis); + if (_monthInc >= 0) + { + gc.add(2, _monthInc); + } + if (_monthSet >= 0) + { + gc.set(2, _monthSet); + } + if (_dayOfMonthInc >= 0) + { + gc.add(5, _dayOfMonthInc); + } + if (_dayOfMonthSet >= 0) + { + gc.set(5, _dayOfMonthSet); + } + if (_hourOfDayInc >= 0) + { + gc.add(11, _hourOfDayInc); + } + if (_hourOfDaySet >= 0) + { + gc.set(11, _hourOfDaySet); + } + if (_minuteInc >= 0) + { + gc.add(12, _minuteInc); + } + if (_minuteSet >= 0) + { + gc.set(12, _minuteSet); + } + return gc.getTimeInMillis(); + } +} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/time/NextTime.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/time/NextTime.java new file mode 100644 index 0000000000..d08d90164d --- /dev/null +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/time/NextTime.java @@ -0,0 +1,22 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +public interface NextTime +{ + public long next(long var1); +} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/time/SchedulingPattern.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/time/SchedulingPattern.java new file mode 100644 index 0000000000..d9fdd655f3 --- /dev/null +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/commons/time/SchedulingPattern.java @@ -0,0 +1,841 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.time; + +import java.util.ArrayList; +import java.util.GregorianCalendar; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.TimeZone; +import java.util.TreeMap; + +import org.l2jmobius.commons.util.Rnd; + +public class SchedulingPattern implements NextTime +{ + private static final int MINUTE_MIN_VALUE = 0; + private static final int MINUTE_MAX_VALUE = 59; + private static final int HOUR_MIN_VALUE = 0; + private static final int HOUR_MAX_VALUE = 23; + private static final int DAY_OF_MONTH_MIN_VALUE = 1; + private static final int DAY_OF_MONTH_MAX_VALUE = 31; + private static final int MONTH_MIN_VALUE = 1; + private static final int MONTH_MAX_VALUE = 12; + private static final int DAY_OF_WEEK_MIN_VALUE = 0; + private static final int DAY_OF_WEEK_MAX_VALUE = 7; + private static final ValueParser MINUTE_VALUE_PARSER = new MinuteValueParser(); + private static final ValueParser HOUR_VALUE_PARSER = new HourValueParser(); + private static final ValueParser DAY_OF_MONTH_VALUE_PARSER = new DayOfMonthValueParser(); + private static final ValueParser MONTH_VALUE_PARSER = new MonthValueParser(); + private static final ValueParser DAY_OF_WEEK_VALUE_PARSER = new DayOfWeekValueParser(); + private final String _asString; + protected List _minuteMatchers = new ArrayList<>(); + protected List _hourMatchers = new ArrayList<>(); + protected List _dayOfMonthMatchers = new ArrayList<>(); + protected List _monthMatchers = new ArrayList<>(); + protected List _dayOfWeekMatchers = new ArrayList<>(); + protected int _matcherSize = 0; + protected Map _hourAdder = new TreeMap<>(); + protected Map _hourAdderRnd = new TreeMap<>(); + protected Map _dayOfYearAdder = new TreeMap<>(); + protected Map _minuteAdderRnd = new TreeMap<>(); + protected Map _weekOfYearAdder = new TreeMap<>(); + + public static boolean validate(String schedulingPattern) + { + try + { + new SchedulingPattern(schedulingPattern); + } + catch (RuntimeException e) + { + return false; + } + return true; + } + + public SchedulingPattern(String pattern) throws RuntimeException + { + _asString = pattern; + StringTokenizer st1 = new StringTokenizer(pattern, "|"); + if (st1.countTokens() < 1) + { + throw new RuntimeException("invalid pattern: \"" + pattern + "\""); + } + + while (st1.hasMoreTokens()) + { + int i; + String localPattern = st1.nextToken(); + StringTokenizer st2 = new StringTokenizer(localPattern, " \t"); + int tokCnt = st2.countTokens(); + if ((tokCnt < 5) || (tokCnt > 6)) + { + throw new RuntimeException("invalid pattern: \"" + localPattern + "\""); + } + + try + { + String minutePattern = st2.nextToken(); + String[] minutePatternParts = minutePattern.split(":"); + if (minutePatternParts.length > 1) + { + for (i = 0; i < (minutePatternParts.length - 1); ++i) + { + if (minutePatternParts[i].length() <= 1) + { + continue; + } + + if (minutePatternParts[i].startsWith("~")) + { + _minuteAdderRnd.put(_matcherSize, Integer.parseInt(minutePatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + minutePatternParts[i] + "\""); + } + minutePattern = minutePatternParts[minutePatternParts.length - 1]; + } + _minuteMatchers.add(buildValueMatcher(minutePattern, MINUTE_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing minutes field: " + e.getMessage() + "."); + } + + try + { + String hourPattern = st2.nextToken(); + String[] hourPatternParts = hourPattern.split(":"); + if (hourPatternParts.length > 1) + { + for (i = 0; i < (hourPatternParts.length - 1); ++i) + { + if (hourPatternParts[i].length() <= 1) + { + continue; + } + + if (hourPatternParts[i].startsWith("+")) + { + _hourAdder.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + if (hourPatternParts[i].startsWith("~")) + { + _hourAdderRnd.put(_matcherSize, Integer.parseInt(hourPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown hour modifier \"" + hourPatternParts[i] + "\""); + } + hourPattern = hourPatternParts[hourPatternParts.length - 1]; + } + _hourMatchers.add(buildValueMatcher(hourPattern, HOUR_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing hours field: " + e.getMessage() + "."); + } + + try + { + String dayOfMonthPattern = st2.nextToken(); + String[] dayOfMonthPatternParts = dayOfMonthPattern.split(":"); + if (dayOfMonthPatternParts.length > 1) + { + for (i = 0; i < (dayOfMonthPatternParts.length - 1); ++i) + { + if (dayOfMonthPatternParts[i].length() <= 1) + { + continue; + } + + if (dayOfMonthPatternParts[i].startsWith("+")) + { + _dayOfYearAdder.put(_matcherSize, Integer.parseInt(dayOfMonthPatternParts[i].substring(1))); + continue; + } + + throw new RuntimeException("Unknown day modifier \"" + dayOfMonthPatternParts[i] + "\""); + } + dayOfMonthPattern = dayOfMonthPatternParts[dayOfMonthPatternParts.length - 1]; + } + _dayOfMonthMatchers.add(buildValueMatcher(dayOfMonthPattern, DAY_OF_MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of month field: " + e.getMessage() + "."); + } + + try + { + _monthMatchers.add(buildValueMatcher(st2.nextToken(), MONTH_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing months field: " + e.getMessage() + "."); + } + + try + { + _dayOfWeekMatchers.add(buildValueMatcher(st2.nextToken(), DAY_OF_WEEK_VALUE_PARSER)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + + if (st2.hasMoreTokens()) + { + try + { + String weekOfYearAdderText = st2.nextToken(); + if (weekOfYearAdderText.charAt(0) != '+') + { + throw new RuntimeException("Unknown week of year addition in pattern \"" + localPattern + "\"."); + } + weekOfYearAdderText = weekOfYearAdderText.substring(1); + _weekOfYearAdder.put(_matcherSize, Integer.parseInt(weekOfYearAdderText)); + } + catch (Exception e) + { + throw new RuntimeException("invalid pattern \"" + localPattern + "\". Error parsing days of week field: " + e.getMessage() + "."); + } + } + ++_matcherSize; + } + } + + private ValueMatcher buildValueMatcher(String str, ValueParser parser) throws Exception + { + if ((str.length() == 1) && str.equals("*")) + { + return new AlwaysTrueValueMatcher(); + } + + ArrayList values = new ArrayList<>(); + StringTokenizer st = new StringTokenizer(str, ","); + while (st.hasMoreTokens()) + { + List local; + String element = st.nextToken(); + try + { + local = parseListElement(element, parser); + } + catch (Exception e) + { + throw new Exception("invalid field \"" + str + "\", invalid element \"" + element + "\", " + e.getMessage()); + } + + for (Integer value : local) + { + if (values.contains(value)) + { + continue; + } + + values.add(value); + } + } + + if (values.size() == 0) + { + throw new Exception("invalid field \"" + str + "\""); + } + + if (parser == DAY_OF_MONTH_VALUE_PARSER) + { + return new DayOfMonthValueMatcher(values); + } + + return new IntArrayValueMatcher(values); + } + + private List parseListElement(String str, ValueParser parser) throws Exception + { + List values; + StringTokenizer st = new StringTokenizer(str, "/"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + try + { + values = parseRange(st.nextToken(), parser); + } + catch (Exception e) + { + throw new Exception("invalid range, " + e.getMessage()); + } + + if (size == 2) + { + int div; + String dStr = st.nextToken(); + + try + { + div = Integer.parseInt(dStr); + } + catch (NumberFormatException e) + { + throw new Exception("invalid divisor \"" + dStr + "\""); + } + + if (div < 1) + { + throw new Exception("non positive divisor \"" + div + "\""); + } + + ArrayList values2 = new ArrayList<>(); + for (int i = 0; i < values.size(); i += div) + { + values2.add(values.get(i)); + } + + return values2; + } + return values; + } + + private List parseRange(String str, ValueParser parser) throws Exception + { + int v2; + int v1; + if (str.equals("*")) + { + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + ArrayList values = new ArrayList<>(); + for (int i = min; i <= max; ++i) + { + values.add(i); + } + return values; + } + + StringTokenizer st = new StringTokenizer(str, "-"); + int size = st.countTokens(); + if ((size < 1) || (size > 2)) + { + throw new Exception("syntax error"); + } + + String v1Str = st.nextToken(); + try + { + v1 = parser.parse(v1Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v1Str + "\", " + e.getMessage()); + } + + if (size == 1) + { + ArrayList values = new ArrayList<>(); + values.add(v1); + return values; + } + + String v2Str = st.nextToken(); + try + { + v2 = parser.parse(v2Str); + } + catch (Exception e) + { + throw new Exception("invalid value \"" + v2Str + "\", " + e.getMessage()); + } + + ArrayList values = new ArrayList<>(); + if (v1 < v2) + { + for (int i = v1; i <= v2; ++i) + { + values.add(i); + } + } + else if (v1 > v2) + { + int i; + int min = parser.getMinValue(); + int max = parser.getMaxValue(); + for (i = v1; i <= max; ++i) + { + values.add(i); + } + for (i = min; i <= v2; ++i) + { + values.add(i); + } + } + else + { + values.add(v1); + } + + return values; + } + + public boolean match(TimeZone timezone, long millis) + { + GregorianCalendar gc = new GregorianCalendar(timezone); + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + for (int i = 0; i < _matcherSize; ++i) + { + boolean eval = false; + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, -_weekOfYearAdder.get(i).intValue()); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, -_dayOfYearAdder.get(i).intValue()); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, -_hourAdder.get(i).intValue()); + } + int minute = gc.get(MONTH_MAX_VALUE); + int hour = gc.get(11); + int dayOfMonth = gc.get(5); + int month = gc.get(2) + 1; + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + int year = gc.get(1); + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + @SuppressWarnings("unused") + boolean bl = minuteMatcher.match(minute) && hourMatcher.match(hour) && (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, gc.isLeapYear(year)) : dayOfMonthMatcher.match(dayOfMonth)) && monthMatcher.match(month) && dayOfWeekMatcher.match(dayOfWeek) ? true : (eval = false); + if (!eval) + { + continue; + } + return true; + } + return false; + } + + public boolean match(long millis) + { + return match(TimeZone.getDefault(), millis); + } + + public long next(TimeZone timezone, long millis) + { + long result = -1L; + GregorianCalendar gc = new GregorianCalendar(timezone); + for (int i = 0; i < _matcherSize; ++i) + { + long next = -1L; + gc.setTimeInMillis(millis); + gc.set(13, 0); + gc.set(14, 0); + if (_weekOfYearAdder.containsKey(i)) + { + gc.add(3, _weekOfYearAdder.get(i)); + } + if (_dayOfYearAdder.containsKey(i)) + { + gc.add(6, _dayOfYearAdder.get(i)); + } + if (_hourAdder.containsKey(i)) + { + gc.add(10, _hourAdder.get(i)); + } + ValueMatcher minuteMatcher = _minuteMatchers.get(i); + ValueMatcher hourMatcher = _hourMatchers.get(i); + ValueMatcher dayOfMonthMatcher = _dayOfMonthMatchers.get(i); + ValueMatcher monthMatcher = _monthMatchers.get(i); + ValueMatcher dayOfWeekMatcher = _dayOfWeekMatchers.get(i); + SEARCH: do + { + int year = gc.get(1); + boolean isLeapYear = gc.isLeapYear(year); + for (int month = gc.get(2) + 1; month <= MONTH_MAX_VALUE; ++month) + { + if (monthMatcher.match(month)) + { + gc.set(2, month - 1); + int maxDayOfMonth = DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + for (int dayOfMonth = gc.get(5); dayOfMonth <= maxDayOfMonth; ++dayOfMonth) + { + if (dayOfMonthMatcher instanceof DayOfMonthValueMatcher ? ((DayOfMonthValueMatcher) dayOfMonthMatcher).match(dayOfMonth, month, isLeapYear) : dayOfMonthMatcher.match(dayOfMonth)) + { + gc.set(5, dayOfMonth); + int dayOfWeek = gc.get(DAY_OF_WEEK_MAX_VALUE) - 1; + if (dayOfWeekMatcher.match(dayOfWeek)) + { + for (int hour = gc.get(11); hour <= HOUR_MAX_VALUE; ++hour) + { + if (hourMatcher.match(hour)) + { + gc.set(11, hour); + for (int minute = gc.get(MONTH_MAX_VALUE); minute <= MINUTE_MAX_VALUE; ++minute) + { + if (!minuteMatcher.match(minute)) + { + continue; + } + + gc.set(MONTH_MAX_VALUE, minute); + long next0 = gc.getTimeInMillis(); + if (next0 <= millis) + { + continue; + } + + if ((next != -1L) && (next0 >= next)) + { + break SEARCH; + } + + next = next0; + if (_hourAdderRnd.containsKey(i)) + { + next += Rnd.get(_hourAdderRnd.get(i)) * 60 * 60 * 1000L; + } + + if (!_minuteAdderRnd.containsKey(i)) + { + break SEARCH; + } + + next += Rnd.get(_minuteAdderRnd.get(i)) * 60 * 1000L; + break SEARCH; + } + } + gc.set(MONTH_MAX_VALUE, 0); + } + } + } + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + } + gc.set(5, 1); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + } + gc.set(2, 0); + gc.set(11, 0); + gc.set(MONTH_MAX_VALUE, 0); + gc.roll(1, true); + } + + while (true); + if ((next <= millis) || ((result != -1L) && (next >= result))) + { + continue; + } + + result = next; + } + return result; + } + + @Override + public long next(long millis) + { + return next(TimeZone.getDefault(), millis); + } + + @Override + public String toString() + { + return _asString; + } + + private static int parseAlias(String value, String[] aliases, int offset) throws Exception + { + for (int i = 0; i < aliases.length; ++i) + { + if (!aliases[i].equalsIgnoreCase(value)) + { + continue; + } + return offset + i; + } + throw new Exception("invalid alias \"" + value + "\""); + } + + private static class DayOfMonthValueMatcher extends IntArrayValueMatcher + { + private static final int[] lastDays = new int[] + { + DAY_OF_MONTH_MAX_VALUE, + 28, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE, + 30, + DAY_OF_MONTH_MAX_VALUE + }; + + public DayOfMonthValueMatcher(List integers) + { + super(integers); + } + + public boolean match(int value, int month, boolean isLeapYear) + { + return super.match(value) || ((value > 27) && match(32) && DayOfMonthValueMatcher.isLastDayOfMonth(value, month, isLeapYear)); + } + + public static int getLastDayOfMonth(int month, boolean isLeapYear) + { + if (isLeapYear && (month == 2)) + { + return 29; + } + + return lastDays[month - 1]; + } + + public static boolean isLastDayOfMonth(int value, int month, boolean isLeapYear) + { + return value == DayOfMonthValueMatcher.getLastDayOfMonth(month, isLeapYear); + } + } + + private static class IntArrayValueMatcher implements ValueMatcher + { + private final int[] values; + + public IntArrayValueMatcher(List integers) + { + int size = integers.size(); + values = new int[size]; + for (int i = 0; i < size; ++i) + { + try + { + values[i] = integers.get(i); + continue; + } + catch (Exception e) + { + throw new IllegalArgumentException(e.getMessage()); + } + } + } + + @Override + public boolean match(int value) + { + for (int i = 0; i < values.length; ++i) + { + if (values[i] != value) + { + continue; + } + return true; + } + return false; + } + } + + private static class AlwaysTrueValueMatcher implements ValueMatcher + { + private AlwaysTrueValueMatcher() + { + } + + @Override + public boolean match(int value) + { + return true; + } + } + + private static interface ValueMatcher + { + public boolean match(int var1); + } + + private static class DayOfWeekValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + }; + + public DayOfWeekValueParser() + { + super(DAY_OF_WEEK_MIN_VALUE, DAY_OF_WEEK_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value) % DAY_OF_WEEK_MAX_VALUE; + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 0); + } + } + } + + private static class MonthValueParser extends SimpleValueParser + { + private static String[] ALIASES = new String[] + { + "jan", + "feb", + "mar", + "apr", + "may", + "jun", + "jul", + "aug", + "sep", + "oct", + "nov", + "dec" + }; + + public MonthValueParser() + { + super(MONTH_MIN_VALUE, MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + try + { + return super.parse(value); + } + catch (Exception e) + { + return SchedulingPattern.parseAlias(value, ALIASES, 1); + } + } + } + + private static class DayOfMonthValueParser extends SimpleValueParser + { + public DayOfMonthValueParser() + { + super(DAY_OF_MONTH_MIN_VALUE, DAY_OF_MONTH_MAX_VALUE); + } + + @Override + public int parse(String value) throws Exception + { + if (value.equalsIgnoreCase("L")) + { + return 32; + } + return super.parse(value); + } + } + + private static class HourValueParser extends SimpleValueParser + { + public HourValueParser() + { + super(HOUR_MIN_VALUE, HOUR_MAX_VALUE); + } + } + + private static class MinuteValueParser extends SimpleValueParser + { + public MinuteValueParser() + { + super(MINUTE_MIN_VALUE, MINUTE_MAX_VALUE); + } + } + + private static class SimpleValueParser implements ValueParser + { + protected int _minValue; + protected int _maxValue; + + public SimpleValueParser(int minValue, int maxValue) + { + _minValue = minValue; + _maxValue = maxValue; + } + + @Override + public int parse(String value) throws Exception + { + int i; + try + { + i = Integer.parseInt(value); + } + catch (NumberFormatException e) + { + throw new Exception("invalid integer value"); + } + if ((i < _minValue) || (i > _maxValue)) + { + throw new Exception("value out of range"); + } + return i; + } + + @Override + public int getMinValue() + { + return _minValue; + } + + @Override + public int getMaxValue() + { + return _maxValue; + } + } + + private static interface ValueParser + { + public int parse(String var1) throws Exception; + + public int getMinValue(); + + public int getMaxValue(); + } +} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/GameServer.java index 6ee8405786..553cccf7a7 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/GameServer.java @@ -71,7 +71,6 @@ import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData; import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData; import org.l2jmobius.gameserver.data.xml.EnsoulData; import org.l2jmobius.gameserver.data.xml.EquipmentUpgradeData; -import org.l2jmobius.gameserver.data.xml.EventEngineData; import org.l2jmobius.gameserver.data.xml.ExperienceData; import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.data.xml.FenceData; @@ -423,8 +422,6 @@ public class GameServer SpawnData.getInstance().init(); DBSpawnManager.getInstance(); - printSection("Event Engine"); - EventEngineData.getInstance(); VoteSystem.initialize(); printSection("Siege"); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/Shutdown.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/Shutdown.java index 585b663269..f222a68ba7 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/Shutdown.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/Shutdown.java @@ -29,7 +29,6 @@ import org.l2jmobius.gameserver.data.SchemeBufferTable; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.OfflineTraderTable; import org.l2jmobius.gameserver.instancemanager.CastleManorManager; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.instancemanager.DBSpawnManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; @@ -453,8 +452,6 @@ public class Shutdown extends Thread LOGGER.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Olympiad.getInstance().saveOlympiadStatus(); LOGGER.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); - CeremonyOfChaosManager.getInstance().stopScheduler(); - LOGGER.info("CeremonyOfChaosManager: Scheduler stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); Hero.getInstance().shutdown(); LOGGER.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms)."); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java deleted file mode 100644 index 29c1ceab09..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/EventEngineData.java +++ /dev/null @@ -1,582 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.data.xml; - -import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; - -import org.l2jmobius.commons.util.IXmlReader; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventMethodNotification; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.BetweenConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.conditions.HaventRunConditionalScheduler; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropGroup; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDropItem; -import org.l2jmobius.gameserver.model.eventengine.drop.EventDrops; -import org.l2jmobius.gameserver.model.eventengine.drop.GroupedDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.eventengine.drop.NormalDrop; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; - -/** - * @author UnAfraid - */ -public class EventEngineData implements IXmlReader -{ - private static final Logger LOGGER = Logger.getLogger(EventEngineData.class.getName()); - - protected EventEngineData() - { - load(); - } - - @Override - public void load() - { - parseDatapackDirectory("data/events", true); - } - - @Override - public void parseDocument(Document doc, File f) - { - for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling()) - { - if ("list".equals(listNode.getNodeName())) - { - for (Node eventNode = listNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - parseEvent(eventNode); - } - } - } - } - } - - /** - * @param eventNode - */ - private void parseEvent(Node eventNode) - { - final String eventName = parseString(eventNode.getAttributes(), "name"); - final String className = parseString(eventNode.getAttributes(), "class"); - AbstractEventManager eventManager = null; - try - { - final Class clazz = Class.forName(className); - - // Attempt to find getInstance() method - for (Method method : clazz.getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && AbstractEventManager.class.isAssignableFrom(method.getReturnType()) && (method.getParameterCount() == 0)) - { - eventManager = (AbstractEventManager) method.invoke(null); - break; - } - } - - if (eventManager == null) - { - throw new NoSuchMethodError("Couldn't method that gives instance of AbstractEventManager!"); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't locate event manager instance for event: " + eventName + " !", e); - return; - } - - for (Node innerNode = eventNode.getFirstChild(); innerNode != null; innerNode = innerNode.getNextSibling()) - { - if ("variables".equals(innerNode.getNodeName())) - { - parseVariables(eventManager, innerNode); - } - else if ("scheduler".equals(innerNode.getNodeName())) - { - parseScheduler(eventManager, innerNode); - } - else if ("rewards".equals(innerNode.getNodeName())) - { - parseRewards(eventManager, innerNode); - } - } - - // Assign event name - eventManager.setName(eventName); - - // Start the scheduler - eventManager.startScheduler(); - - // Start conditional schedulers - eventManager.startConditionalSchedulers(); - - // Notify the event manager that we've done initializing its stuff - eventManager.onInitialized(); - - LOGGER.info(getClass().getSimpleName() + ": " + eventManager.getClass().getSimpleName() + ": Initialized."); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseVariables(AbstractEventManager eventManager, Node innerNode) - { - final StatSet variables = new StatSet(LinkedHashMap::new); - for (Node variableNode = innerNode.getFirstChild(); variableNode != null; variableNode = variableNode.getNextSibling()) - { - if ("variable".equals(variableNode.getNodeName())) - { - variables.set(parseString(variableNode.getAttributes(), "name"), parseString(variableNode.getAttributes(), "value")); - } - else if ("list".equals(variableNode.getNodeName())) - { - parseListVariables(eventManager, variables, variableNode); - } - else if ("map".equals(variableNode.getNodeName())) - { - parseMapVariables(eventManager, variables, variableNode); - } - } - eventManager.setVariables(variables); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseScheduler(AbstractEventManager eventManager, Node innerNode) - { - eventManager.stopScheduler(); - final Set schedulers = new LinkedHashSet<>(); - final Set conditionalSchedulers = new LinkedHashSet<>(); - for (Node scheduleNode = innerNode.getFirstChild(); scheduleNode != null; scheduleNode = scheduleNode.getNextSibling()) - { - if ("schedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - final EventScheduler scheduler = new EventScheduler(eventManager, params); - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("event".equals(eventNode.getNodeName())) - { - String methodName = parseString(eventNode.getAttributes(), "name"); - if (methodName.charAt(0) == '#') - { - methodName = methodName.substring(1); - } - - final List args = new ArrayList<>(); - for (Node argsNode = eventNode.getFirstChild(); argsNode != null; argsNode = argsNode.getNextSibling()) - { - if ("arg".equals(argsNode.getNodeName())) - { - final String type = parseString(argsNode.getAttributes(), "type"); - final Object value = parseObject(eventManager, type, argsNode.getTextContent()); - if (value != null) - { - args.add(value); - } - } - } - - try - { - scheduler.addEventNotification(new EventMethodNotification(eventManager, methodName, args)); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't add event notification for " + eventManager.getClass().getSimpleName(), e); - } - } - } - schedulers.add(scheduler); - } - else if ("conditionalSchedule".equals(scheduleNode.getNodeName())) - { - final StatSet params = new StatSet(LinkedHashMap::new); - final NamedNodeMap attrs = scheduleNode.getAttributes(); - for (int i = 0; i < attrs.getLength(); i++) - { - final Node node = attrs.item(i); - params.set(node.getNodeName(), node.getNodeValue()); - } - - for (Node eventNode = scheduleNode.getFirstChild(); eventNode != null; eventNode = eventNode.getNextSibling()) - { - if ("run".equals(eventNode.getNodeName())) - { - final String name = parseString(eventNode.getAttributes(), "name"); - final String ifType = parseString(eventNode.getAttributes(), "if", "BETWEEN").toUpperCase(); - switch (ifType) - { - case "BETWEEN": - { - final List names = new ArrayList<>(2); - for (Node innerData = eventNode.getFirstChild(); innerData != null; innerData = innerData.getNextSibling()) - { - if ("name".equals(innerData.getNodeName())) - { - names.add(innerData.getTextContent()); - } - } - if (names.size() != 2) - { - LOGGER.warning(getClass().getSimpleName() + ": Event: " + eventManager.getClass().getSimpleName() + " has incorrect amount of scheduler names: " + names + " expected: 2 found: " + names.size()); - } - else - { - conditionalSchedulers.add(new BetweenConditionalScheduler(eventManager, name, names.get(0), names.get(1))); - } - break; - } - case "HASNT_RUN": - { - conditionalSchedulers.add(new HaventRunConditionalScheduler(eventManager, name)); - break; - } - } - } - } - } - } - eventManager.setSchedulers(schedulers); - eventManager.setConditionalSchedulers(conditionalSchedulers); - } - - /** - * @param eventManager - * @param innerNode - */ - private void parseRewards(AbstractEventManager eventManager, Node innerNode) - { - final Map rewards = new LinkedHashMap<>(); - forEach(innerNode, IXmlReader::isNode, rewardsNode -> - { - if ("reward".equalsIgnoreCase(rewardsNode.getNodeName())) - { - final String name = parseString(rewardsNode.getAttributes(), "name"); - final EventDrops dropType = parseEnum(rewardsNode.getAttributes(), EventDrops.class, "type"); - switch (dropType) - { - case GROUPED: - { - final GroupedDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "group", groupsNode -> - { - final EventDropGroup group = new EventDropGroup(parseDouble(groupsNode.getAttributes(), "chance")); - forEach(groupsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - group.addItem(new EventDropItem(id, min, max, chance)); - }); - }); - rewards.put(name, droplist); - break; - } - case NORMAL: - { - final NormalDrop droplist = dropType.newInstance(); - forEach(rewardsNode, "item", itemNode -> - { - final NamedNodeMap attrs = itemNode.getAttributes(); - final int id = parseInteger(attrs, "id"); - final int min = parseInteger(attrs, "min"); - final int max = parseInteger(attrs, "max"); - final double chance = parseDouble(attrs, "chance"); - droplist.addItem(new EventDropItem(id, min, max, chance)); - }); - rewards.put(name, droplist); - break; - } - } - } - }); - eventManager.setRewards(rewards); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseListVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String type = parseString(variableNode.getAttributes(), "type"); - final Class classType = getClassByName(eventManager, type); - final List values = newList(classType); - switch (type) - { - case "Byte": - case "Short": - case "Integer": - case "Float": - case "Long": - case "Double": - case "String": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("value".equals(stringNode.getNodeName())) - { - ((List) values).add(parseObject(eventManager, type, stringNode.getTextContent())); - } - } - break; - } - case "ItemHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("item".equals(stringNode.getNodeName())) - { - ((List) values).add(new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count", 1L))); - } - } - break; - } - case "SkillHolder": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("skill".equals(stringNode.getNodeName())) - { - ((List) values).add(new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level", 1))); - } - } - break; - } - case "Location": - { - for (Node stringNode = variableNode.getFirstChild(); stringNode != null; stringNode = stringNode.getNextSibling()) - { - if ("location".equals(stringNode.getNodeName())) - { - ((List) values).add(new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - } - } - break; - } - default: - { - LOGGER.info(getClass().getSimpleName() + ": Unhandled list case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - break; - } - } - variables.set(name, values); - } - - /** - * @param eventManager - * @param variables - * @param variableNode - */ - @SuppressWarnings("unchecked") - private void parseMapVariables(AbstractEventManager eventManager, StatSet variables, Node variableNode) - { - final String name = parseString(variableNode.getAttributes(), "name"); - final String keyType = parseString(variableNode.getAttributes(), "keyType"); - final String valueType = parseString(variableNode.getAttributes(), "valueType"); - final Class keyClass = getClassByName(eventManager, keyType); - final Class valueClass = getClassByName(eventManager, valueType); - final Map map = newMap(keyClass, valueClass); - forEach(variableNode, IXmlReader::isNode, stringNode -> - { - switch (stringNode.getNodeName()) - { - case "entry": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), parseObject(eventManager, valueType, parseString(attrs, "value"))); - break; - } - case "item": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new ItemHolder(parseInteger(stringNode.getAttributes(), "id"), parseLong(stringNode.getAttributes(), "count"))); - break; - } - case "skill": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new SkillHolder(parseInteger(stringNode.getAttributes(), "id"), parseInteger(stringNode.getAttributes(), "level"))); - break; - } - case "location": - { - final NamedNodeMap attrs = stringNode.getAttributes(); - ((Map) map).put(parseObject(eventManager, keyType, parseString(attrs, "key")), new Location(parseInteger(stringNode.getAttributes(), "x"), parseInteger(stringNode.getAttributes(), "y"), parseInteger(stringNode.getAttributes(), "z", parseInteger(stringNode.getAttributes(), "heading", 0)))); - break; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled map case: " + name + " " + stringNode.getNodeName() + " for event: " + eventManager.getClass().getSimpleName()); - } - } - }); - variables.set(name, map); - } - - private Class getClassByName(AbstractEventManager eventManager, String name) - { - switch (name) - { - case "Byte": - { - return Byte.class; - } - case "Short": - { - return Short.class; - } - case "Integer": - { - return Integer.class; - } - case "Float": - { - return Float.class; - } - case "Long": - { - return Long.class; - } - case "Double": - { - return Double.class; - } - case "String": - { - return String.class; - } - case "ItemHolder": - { - return ItemHolder.class; - } - case "SkillHolder": - { - return SkillHolder.class; - } - case "Location": - { - return Location.class; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled class case: " + name + " for event: " + eventManager.getClass().getSimpleName()); - return Object.class; - } - } - } - - private Object parseObject(AbstractEventManager eventManager, String type, String value) - { - switch (type) - { - case "Byte": - { - return Byte.decode(value); - } - case "Short": - { - return Short.decode(value); - } - case "Integer": - { - return Integer.decode(value); - } - case "Float": - { - return Float.parseFloat(value); - } - case "Long": - { - return Long.decode(value); - } - case "Double": - { - return Double.parseDouble(value); - } - case "String": - { - return value; - } - default: - { - LOGGER.warning(getClass().getSimpleName() + ": Unhandled object case: " + type + " for event: " + eventManager.getClass().getSimpleName()); - return null; - } - } - } - - private static List newList(Class type) - { - return new ArrayList<>(); - } - - private static Map newMap(Class keyClass, Class valueClass) - { - return new LinkedHashMap<>(); - } - - /** - * Gets the single instance of EventEngineData. - * @return single instance of EventEngineData - */ - public static EventEngineData getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final EventEngineData INSTANCE = new EventEngineData(); - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java deleted file mode 100644 index fff7561e47..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosResult.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosResult -{ - TIE, - WIN, - LOSE -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java deleted file mode 100644 index cfa14a8f1c..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/enums/CeremonyOfChaosState.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.enums; - -import org.l2jmobius.gameserver.model.eventengine.IEventState; - -/** - * @author Sdw - */ -public enum CeremonyOfChaosState implements IEventState -{ - SCHEDULED, - REGISTRATION, - PREPARING_FOR_TELEPORT, - PREPARING_FOR_FIGHT, - RUNNING -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java deleted file mode 100644 index 9b15d1ebbc..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/CeremonyOfChaosManager.java +++ /dev/null @@ -1,457 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.util.Comparator; -import java.util.List; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -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.OnPlayerBypass; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.events.returns.TerminateReturn; -import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; -import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; -import org.l2jmobius.gameserver.model.punishment.PunishmentType; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.model.zone.ZoneId; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class CeremonyOfChaosManager extends AbstractEventManager -{ - protected static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosManager.class.getName()); - - public static final String INITIAL_BUFF_KEY = "initial_buff"; - public static final String INITIAL_ITEMS_KEY = "initial_items"; - public static final String MAX_PLAYERS_KEY = "max_players"; - public static final String MAX_ARENAS_KEY = "max_arenas"; - public static final String INSTANCE_TEMPLATES_KEY = "instance_templates"; - public static final String END_BUFFS_KEYH = "end_buffs"; - - protected CeremonyOfChaosManager() - { - } - - @Override - public void onInitialized() - { - if (getState() == null) - { - setState(CeremonyOfChaosState.SCHEDULED); - } - } - - @ScheduleTarget - private void onPeriodEnd(String text) - { - // Set monthly true hero. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO, GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MEMBER, 0)); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TRUE_HERO_REWARDED, false); - // Reset monthly winner. - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, 0); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, 0); - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos victories: " + e); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var = ?")) - { - ps.setString(1, PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - ps.execute(); - } - catch (Exception e) - { - LOGGER.severe(getClass().getSimpleName() + ": Could not reset Ceremony Of Chaos penalties: " + e); - } - - // Update data for online players. - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_PROHIBITED_PENALTIES); - player.getVariables().remove(PlayerVariables.CEREMONY_OF_CHAOS_MARKS); - player.getVariables().storeMe(); - } - - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos variables have been reset."); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos period has ended!"); - } - - @ScheduleTarget - private void onEventStart() - { - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has started!"); - } - - @ScheduleTarget - private void onEventEnd() - { - PunishmentManager.getInstance().stopPunishment(PunishmentAffect.CHARACTER, PunishmentType.COC_BAN); - LOGGER.info(getClass().getSimpleName() + ": Ceremony of Chaos event has ended!"); - } - - @ScheduleTarget - private void onRegistrationStart() - { - if (getState() != CeremonyOfChaosState.SCHEDULED) - { - return; - } - - setState(CeremonyOfChaosState.REGISTRATION); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.THE_REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_HAS_BEGUN); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - } - - @ScheduleTarget - private void onRegistrationEnd() - { - if (getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_TELEPORT); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (player.isOnline()) - { - player.sendPacket(SystemMessageId.THE_REGISTRATION_FOR_THE_CEREMONY_OF_CHAOS_IS_OVER); - if (!isRegistered(player)) - { - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - } - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("count_down", params, 60 * 1000, null, null); - } - - @ScheduleTarget - private void onPrepareForFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - return; - } - - setState(CeremonyOfChaosState.PREPARING_FOR_FIGHT); - int eventId = 0; - int position = 1; - CeremonyOfChaosEvent event = null; - final List players = getRegisteredPlayers().stream().sorted(Comparator.comparingInt(PlayerInstance::getLevel)).collect(Collectors.toList()); - final int maxPlayers = getMaxPlayersInArena(); - final List templates = getVariables().getList(INSTANCE_TEMPLATES_KEY, Integer.class); - for (PlayerInstance player : players) - { - if (player.isOnline() && canRegister(player, true)) - { - if ((event == null) || (event.getMembers().size() >= maxPlayers)) - { - final int template = templates.get(Rnd.get(templates.size())); - event = new CeremonyOfChaosEvent(eventId++, InstanceManager.getInstance().getInstanceTemplate(template)); - position = 1; - getEvents().add(event); - } - - event.addMember(new CeremonyOfChaosMember(player, event, position++)); - } - else - { - player.prohibiteCeremonyOfChaos(); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - } - } - - // Clear previously registrated players - getRegisteredPlayers().clear(); - - // Prepare all event's players for start - getEvents().forEach(CeremonyOfChaosEvent::preparePlayers); - } - - @ScheduleTarget - private void onStartFight() - { - if (getState() != CeremonyOfChaosState.PREPARING_FOR_FIGHT) - { - return; - } - - setState(CeremonyOfChaosState.RUNNING); - getEvents().forEach(CeremonyOfChaosEvent::startFight); - } - - @ScheduleTarget - private void onEndFight() - { - if (getState() != CeremonyOfChaosState.RUNNING) - { - return; - } - - setState(CeremonyOfChaosState.SCHEDULED); - getEvents().forEach(CeremonyOfChaosEvent::stopFight); - getEvents().clear(); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "count_down": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.YOU_WILL_BE_MOVED_TO_THE_ARENA_IN_S1_SECOND_S); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 10); - getTimers().addTimer(event, params, 50 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - } - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - getRegisteredPlayers().forEach(member -> member.sendPacket(packets)); - } - - @Override - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - boolean canRegister = true; - - final Clan clan = player.getClan(); - SystemMessageId sm = null; - if (player.getLevel() < 85) - { - sm = SystemMessageId.ONLY_CHARACTERS_OF_LV_85_CAN_PARTICIPATE_IN_THE_TOURNAMENT; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - // else if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) - // { - // sm = SystemMessageId.ONLY_CHARACTERS_WHO_HAVE_COMPLETED_THE_3RD_CLASS_TRANSFER_MAY_PARTICIPATE; - // canRegister = false; - // } - else if (!player.isInventoryUnder80(false) || (player.getWeightPenalty() != 0)) - { - sm = SystemMessageId.UNABLE_TO_PROCESS_THIS_REQUEST_UNTIL_YOUR_INVENTORY_S_WEIGHT_AND_SLOT_COUNT_ARE_LESS_THAN_80_PERCENT_OF_CAPACITY; - canRegister = false; - } - else if ((clan == null) || (clan.getLevel() < 6)) - { - sm = SystemMessageId.ONLY_CHARACTERS_WHO_ARE_A_PART_OF_A_CLAN_OF_LEVEL_3_OR_ABOVE_MAY_PARTICIPATE; - canRegister = false; - } - else if (getRegisteredPlayers().size() >= (getVariables().getInt(MAX_ARENAS_KEY, 5) * getMaxPlayersInArena())) - { - sm = SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW; - canRegister = false; - } - else if (player.isCursedWeaponEquipped() || (player.getReputation() < 0)) - { - sm = SystemMessageId.WAITING_LIST_REGISTRATION_IS_NOT_ALLOWED_WHILE_THE_CURSED_SWORD_IS_BEING_USED_OR_THE_STATUS_IS_IN_A_CHAOTIC_STATE; - canRegister = false; - } - else if (player.isInDuel()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_DURING_A_DUEL; - canRegister = false; - } - else if (player.isInOlympiadMode() || OlympiadManager.getInstance().isRegistered(player)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_OLYMPIAD; - canRegister = false; - } - else if (player.isOnEvent(CeremonyOfChaosEvent.class) || (player.getBlockCheckerArena() > -1)) // TODO underground coliseum and kratei checks. - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_WHILE_PARTICIPATING_IN_THE_BLOCK_CHECKER_COLISEUM_OLYMPIAD_KRATEI_S_CUBE_CEREMONY_OF_CHAOS; - canRegister = false; - } - else if (player.isInInstance()) - { - sm = SystemMessageId.YOU_MAY_NOT_REGISTER_WHILE_USING_THE_INSTANCE_ZONE; - canRegister = false; - } - else if (player.isInSiege()) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_FOR_THE_WAITING_LIST_ON_THE_BATTLEFIELD_CASTLE_SIEGE_FORTRESS_BATTLE; - canRegister = false; - } - else if (player.isInsideZone(ZoneId.SIEGE)) - { - sm = SystemMessageId.YOU_CANNOT_REGISTER_IN_THE_WAITING_LIST_WHILE_BEING_INSIDE_OF_A_BATTLEGROUND_CASTLE_SIEGE_FORTRESS_BATTLE; - canRegister = false; - } - else if (player.isFlyingMounted()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_AS_A_FLYING_TRANSFORMED_OBJECT; - canRegister = false; - } - else if (player.isFishing()) - { - sm = SystemMessageId.YOU_CANNOT_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_WHILE_FISHING; - canRegister = false; - } - else if (player.isCeremonyOfChaosProhibited()) - { - canRegister = false; - } - - // TODO : One player can take part in 16 matches per day. - if ((sm != null) && sendMessage) - { - player.sendPacket(sm); - } - - return canRegister; - } - - @RegisterEvent(EventType.ON_PLAYER_BYPASS) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public TerminateReturn OnPlayerBypass(OnPlayerBypass event) - { - final PlayerInstance player = event.getPlayer(); - if (player == null) - { - return null; - } - - if (event.getCommand().equalsIgnoreCase("pledgegame?command=apply")) - { - if (registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - return new TerminateReturn(true, false, false); - } - return null; - } - - @RegisterEvent(EventType.ON_PLAYER_LOGIN) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void OnPlayerLogin(OnPlayerLogin event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (canRegister(player, false)) - { - player.sendPacket(ExCuriousHouseState.REGISTRATION_PACKET); - } - } - } - - @Override - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - if (getState() == CeremonyOfChaosState.REGISTRATION) - { - final PlayerInstance player = event.getPlayer(); - if (getRegisteredPlayers().contains(player)) - { - getRegisteredPlayers().remove(player); - } - } - } - - // player leave clan - - public int getMaxPlayersInArena() - { - return getVariables().getInt(MAX_PLAYERS_KEY, 18); - } - - public static CeremonyOfChaosManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final CeremonyOfChaosManager INSTANCE = new CeremonyOfChaosManager(); - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java index 380d97e557..0c3214c9a3 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/ClanHallAuctionManager.java @@ -16,56 +16,77 @@ */ package org.l2jmobius.gameserver.instancemanager; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.l2jmobius.commons.threads.ThreadPool; +import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.ClanHallData; import org.l2jmobius.gameserver.model.clan.Clan; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; import org.l2jmobius.gameserver.model.residences.ClanHallAuction; /** * @author Sdw */ -public class ClanHallAuctionManager extends AbstractEventManager> +public class ClanHallAuctionManager { private static final Logger LOGGER = Logger.getLogger(ClanHallAuctionManager.class.getName()); private static final Map AUCTIONS = new HashMap<>(); + private static ScheduledFuture _endTask; protected ClanHallAuctionManager() { + // Schedule of the start, next Wednesday at 19:00. + final Calendar start = Calendar.getInstance(); + if ((start.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + start.add(Calendar.DAY_OF_YEAR, 7); + } + start.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + start.set(Calendar.HOUR_OF_DAY, 19); + start.set(Calendar.MINUTE, 0); + start.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, start.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onStart(), startDelay, 604800000); // 604800000 = 1 week + if (startDelay > 0) + { + onStart(); + } + + // Schedule of the end, next Wednesday at 11:00. + final Calendar end = Calendar.getInstance(); + if ((end.get(Calendar.DAY_OF_WEEK) >= Calendar.WEDNESDAY)) + { + end.add(Calendar.DAY_OF_YEAR, 7); + } + end.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + end.set(Calendar.HOUR_OF_DAY, 11); + end.set(Calendar.MINUTE, 0); + end.set(Calendar.SECOND, 0); + final long endDelay = Math.max(0, end.getTimeInMillis() - Chronos.currentTimeMillis()); + _endTask = ThreadPool.scheduleAtFixedRate(() -> onEnd(), endDelay, 604800000); // 604800000 = 1 week } - @ScheduleTarget - private void onEventStart() + private void onStart() { LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has started!"); AUCTIONS.clear(); - - //@formatter:off - ClanHallData.getInstance().getFreeAuctionableHall() - .forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); - //@formatter:on + ClanHallData.getInstance().getFreeAuctionableHall().forEach(c -> AUCTIONS.put(c.getResidenceId(), new ClanHallAuction(c.getResidenceId()))); } - @ScheduleTarget - private void onEventEnd() + private void onEnd() { AUCTIONS.values().forEach(ClanHallAuction::finalizeAuctions); AUCTIONS.clear(); LOGGER.info(getClass().getSimpleName() + ": Clan Hall Auction has ended!"); } - @Override - public void onInitialized() - { - } - public ClanHallAuction getClanHallAuctionById(int clanHallId) { return AUCTIONS.get(clanHallId); @@ -95,6 +116,11 @@ public class ClanHallAuctionManager extends AbstractEventManager> +public class DailyTaskManager { private static final Logger LOGGER = Logger.getLogger(DailyTaskManager.class.getName()); + private final static int[] RESET_SKILLS = + { + 2510, // Wondrous Cubic + 22180, // Wondrous Cubic - 1 time use + }; + protected DailyTaskManager() { + // Schedule reset everyday at 6:30. + final Calendar calendar = Calendar.getInstance(); + if ((calendar.get(Calendar.HOUR_OF_DAY) > 6) && (calendar.get(Calendar.MINUTE) > 30)) + { + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + calendar.set(Calendar.HOUR_OF_DAY, 6); + calendar.set(Calendar.MINUTE, 30); + calendar.set(Calendar.SECOND, 0); + final long startDelay = Math.max(0, calendar.getTimeInMillis() - Chronos.currentTimeMillis()); + ThreadPool.scheduleAtFixedRate(() -> onReset(), startDelay, 86400000); // 86400000 = 1 day + + // Global save task. + ThreadPool.scheduleAtFixedRate(() -> onSave(), 1800000, 1800000); // 1800000 = 30 minutes } - @Override - public void onInitialized() - { - } - - @ScheduleTarget private void onReset() { + if (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY) + { + clanLeaderApply(); + resetVitalityWeekly(); + resetTimedHuntingZonesWeekly(); + } + else + { + resetVitalityDaily(); + } + resetClanBonus(); - resetDailyMissionRewards(); - resetDailySkills(); - resetRecommends(); - resetWorldChatPoints(); - resetTrainingCamp(); - resetVitality(); - resetVip(); + resetClanContributionList(); resetClanDonationPoints(); - onResetTimedHuntingZones(); - onResetAttendanceRewards(); + resetDailySkills(); + resetWorldChatPoints(); + resetRecommends(); + resetTrainingCamp(); + resetTimedHuntingZones(); + resetDailyMissionRewards(); + resetAttendanceRewards(); + resetVip(); } - @ScheduleTarget private void onSave() { GlobalVariablesManager.getInstance().storeMe(); @@ -95,73 +112,7 @@ public class DailyTaskManager extends AbstractEventManager> } } - private void resetVitality() - { - if (!Config.ENABLE_VITALITY) - { - return; - } - - for (PlayerInstance player : World.getInstance().getPlayers()) - { - player.updateVitalityPoints(Config.STARTING_VITALITY_POINTS, false, false); - for (SubClassHolder subclass : player.getSubClasses().values()) - { - subclass.setVitalityPoints(Math.min(PlayerStat.MAX_VITALITY_POINTS, subclass.getVitalityPoints() + Config.STARTING_VITALITY_POINTS)); - } - } - - try (Connection con = DatabaseFactory.getConnection()) - { - Map currPoints = new HashMap<>(); - try (PreparedStatement st = con.prepareStatement("SELECT charId, vitality_points FROM character_subclasses")) - { - ResultSet rs = st.executeQuery(); - while (rs.next()) - { - currPoints.put(rs.getInt(1), rs.getInt(2)); - } - } - try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = ? WHERE charId = ?")) - { - for (Entry entry : currPoints.entrySet()) - { - st.setInt(1, Math.min(PlayerStat.MAX_VITALITY_POINTS, entry.getValue() + Config.STARTING_VITALITY_POINTS)); - st.setInt(2, entry.getKey()); - st.addBatch(); - } - st.executeBatch(); - } - - currPoints.clear(); - try (PreparedStatement st = con.prepareStatement("SELECT charId, vitality_points FROM characters")) - { - ResultSet rs = st.executeQuery(); - while (rs.next()) - { - currPoints.put(rs.getInt(1), rs.getInt(2)); - } - } - try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = ? WHERE charId = ?")) - { - for (Entry entry : currPoints.entrySet()) - { - st.setInt(1, Math.min(PlayerStat.MAX_VITALITY_POINTS, entry.getValue() + Config.STARTING_VITALITY_POINTS)); - st.setInt(2, entry.getKey()); - st.addBatch(); - } - st.executeBatch(); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error while updating Vitality", e); - } - LOGGER.info("Vitality resetted"); - } - - @ScheduleTarget - private void onClanLeaderApply() + private void clanLeaderApply() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -179,8 +130,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Clan leaders has been updated."); } - @ScheduleTarget - private void onWeeklyResetContributionList() + private void resetClanContributionList() { for (Clan clan : ClanTable.getInstance().getClans()) { @@ -188,8 +138,49 @@ public class DailyTaskManager extends AbstractEventManager> } } - @ScheduleTarget - private void onVitalityReset() + private void resetVitalityDaily() + { + if (!Config.ENABLE_VITALITY) + { + return; + } + + int vitality = PlayerStat.MAX_VITALITY_POINTS / 4; + for (PlayerInstance player : World.getInstance().getPlayers()) + { + final int VP = player.getVitalityPoints(); + player.setVitalityPoints(VP + vitality, false); + for (SubClassHolder subclass : player.getSubClasses().values()) + { + final int VPS = subclass.getVitalityPoints(); + subclass.setVitalityPoints(VPS + vitality); + } + } + + try (Connection con = DatabaseFactory.getConnection()) + { + try (PreparedStatement st = con.prepareStatement("UPDATE character_subclasses SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + + try (PreparedStatement st = con.prepareStatement("UPDATE characters SET vitality_points = IF(vitality_points = ?, vitality_points, vitality_points + ?)")) + { + st.setInt(1, PlayerStat.MAX_VITALITY_POINTS); + st.setInt(2, PlayerStat.MAX_VITALITY_POINTS / 4); + st.execute(); + } + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Error while updating vitality", e); + } + LOGGER.info("Daily Vitality Added"); + } + + private void resetVitalityWeekly() { if (!Config.ENABLE_VITALITY) { @@ -236,12 +227,11 @@ public class DailyTaskManager extends AbstractEventManager> { try (Connection con = DatabaseFactory.getConnection()) { - final List dailySkills = getVariables().getList("reset_skills", SkillHolder.class, Collections.emptyList()); - for (SkillHolder skill : dailySkills) + for (int skill : RESET_SKILLS) { try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_skills_save WHERE skill_id=?;")) { - ps.setInt(1, skill.getSkillId()); + ps.setInt(1, skill); ps.execute(); } } @@ -385,8 +375,7 @@ public class DailyTaskManager extends AbstractEventManager> DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); } - @ScheduleTarget - public void onResetTimedHuntingZones() + public void resetTimedHuntingZones() { for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) { @@ -420,8 +409,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Special Hunting Zones has been resetted."); } - @ScheduleTarget - public void onResetWeeklyTimedHuntingZones() + public void resetTimedHuntingZonesWeekly() { for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones()) { @@ -455,7 +443,7 @@ public class DailyTaskManager extends AbstractEventManager> LOGGER.info("Weekly Special Hunting Zones has been resetted."); } - public void onResetAttendanceRewards() + public void resetAttendanceRewards() { if (Config.ATTENDANCE_REWARDS_SHARE_ACCOUNT) { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java index f55e00d36a..8978469456 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/HandysBlockCheckerManager.java @@ -168,9 +168,9 @@ public class HandysBlockCheckerManager return false; } - if (player.isOnEvent() || player.isInOlympiadMode()) + if (player.isRegisteredOnEvent() || player.isInOlympiadMode()) { - player.sendMessage("Couldnt register you due other event participation"); + player.sendMessage("Couldnt register you due other event participation."); return false; } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java index 4769b0fc3e..49193aacf4 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/SellBuffsManager.java @@ -401,12 +401,7 @@ public class SellBuffsManager implements IXmlReader player.sendMessage("You can't sell buffs with Olympiad status!"); return false; } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendMessage("You can't sell buffs with Ceremony of Chaos status!"); - return false; - } - else if (player.isOnEvent()) // custom event message + else if (player.isRegisteredOnEvent()) { player.sendMessage("You can't sell buffs while registered in an event!"); return false; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java deleted file mode 100644 index 9f5b5c6c97..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/ElpiesManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class ElpiesManager extends AbstractEventManager> -{ - protected ElpiesManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Elpies"); - if (event != null) - { - event.eventStart(null); - } - } - - public static ElpiesManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final ElpiesManager INSTANCE = new ElpiesManager(); - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java deleted file mode 100644 index c0cc276691..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/GameEvent.java +++ /dev/null @@ -1,548 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.data.SpawnTable; -import org.l2jmobius.gameserver.data.xml.NpcData; -import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; -import org.l2jmobius.gameserver.model.Spawn; -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Nik - * @Since 2011/05/17 21:51:39 - */ -public class GameEvent -{ - protected static final Logger LOGGER = Logger.getLogger(GameEvent.class.getName()); - public static EventState eventState = EventState.OFF; - public static String _eventName = ""; - public static String _eventCreator = ""; - public static String _eventInfo = ""; - public static int _teamsNumber = 0; - public static final Map _teamNames = new ConcurrentHashMap<>(); - public static final Set _registeredPlayers = ConcurrentHashMap.newKeySet(); - public static final Map> _teams = new ConcurrentHashMap<>(); - public static int _npcId = 0; - private static final Map _connectionLossData = new ConcurrentHashMap<>(); - - public enum EventState - { - OFF, // Not running - STANDBY, // Waiting for participants to register - ON // Registration is over and the event has started. - } - - /** - * @param player - * @return The team ID where the player is in, or -1 if player is null or team not found. - */ - public static int getPlayerTeamId(PlayerInstance player) - { - if (player == null) - { - return -1; - } - - for (Entry> team : _teams.entrySet()) - { - if (team.getValue().contains(player)) - { - return team.getKey(); - } - } - - return -1; - } - - public static List getTopNKillers(int n) - { - final Map tmp = new HashMap<>(); - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - if (player.getEventStatus() == null) - { - continue; - } - tmp.put(player, player.getEventStatus().getKills().size()); - } - } - - sortByValue(tmp); - - // If the map size is less than "n", n will be as much as the map size - if (tmp.size() <= n) - { - return new ArrayList<>(tmp.keySet()); - } - - final List toReturn = new ArrayList<>(tmp.keySet()); - return toReturn.subList(1, n); - } - - public static void showEventHtml(PlayerInstance player, String objectid) - { - // TODO: work on this - if (eventState == EventState.STANDBY) - { - try - { - final String htmContent; - final NpcHtmlMessage html = new NpcHtmlMessage(Integer.parseInt(objectid)); - if (_registeredPlayers.contains(player)) - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participating.htm"); - } - else - { - htmContent = HtmCache.getInstance().getHtm(player, "data/html/mods/EventEngine/Participation.htm"); - } - - if (htmContent != null) - { - html.setHtml(htmContent); - } - - html.replace("%objectId%", objectid); // Yeah, we need this. - html.replace("%eventName%", _eventName); - html.replace("%eventCreator%", _eventCreator); - html.replace("%eventInfo%", _eventInfo); - player.sendPacket(html); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on showEventHtml(): " + e.getMessage(), e); - } - } - } - - /** - * Spawns an event participation NPC near the player. The npc id used to spawning is GameEvent._npcId - * @param target - */ - public static void spawnEventNpc(PlayerInstance target) - { - try - { - final Spawn spawn = new Spawn(_npcId); - spawn.setXYZ(target.getX() + 50, target.getY() + 50, target.getZ()); - spawn.setAmount(1); - spawn.setHeading(target.getHeading()); - spawn.stopRespawn(); - SpawnTable.getInstance().addNewSpawn(spawn, false); - spawn.init(); - spawn.getLastSpawn().setCurrentHp(999999999); - spawn.getLastSpawn().setTitle(_eventName); - spawn.getLastSpawn().getVariables().set("eventmob", true); - spawn.getLastSpawn().setInvul(true); - // spawn.getLastSpawn().decayMe(); - // spawn.getLastSpawn().spawnMe(spawn.getLastSpawn().getX(), spawn.getLastSpawn().getY(), spawn.getLastSpawn().getZ()); - spawn.getLastSpawn().broadcastPacket(new MagicSkillUse(spawn.getLastSpawn(), spawn.getLastSpawn(), 1034, 1, 1, 1)); - - // _npcs.add(spawn.getLastSpawn()); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception on spawn(): " + e.getMessage(), e); - } - } - - /** - * Zoey76: TODO: Rewrite this in a way that doesn't iterate over all spawns. - */ - public static void unspawnEventNpcs() - { - SpawnTable.getInstance().forEachSpawn(spawn -> - { - final Npc npc = spawn.getLastSpawn(); - if ((npc != null) && npc.getVariables().getBoolean("eventmob", false)) - { - npc.deleteMe(); - spawn.stopRespawn(); - SpawnTable.getInstance().deleteSpawn(spawn, false); - } - return true; - }); - } - - /** - * @param player - * @return False: If player is null, his event status is null or the event state is off. True: if the player is inside the _registeredPlayers list while the event state is STANDBY. If the event state is ON, it will check if the player is inside in one of the teams. - */ - public static boolean isParticipant(PlayerInstance player) - { - if ((player == null) || (player.getEventStatus() == null)) - { - return false; - } - - switch (eventState) - { - case OFF: - { - return false; - } - case STANDBY: - { - return _registeredPlayers.contains(player); - } - case ON: - { - for (Set teamList : _teams.values()) - { - if (teamList.contains(player)) - { - return true; - } - } - } - } - return false; - } - - /** - * Adds the player to the list of participants. If the event state is NOT STANDBY, the player wont be registered. - * @param player - */ - public static void registerPlayer(PlayerInstance player) - { - if (eventState != EventState.STANDBY) - { - player.sendMessage("The registration period for this event is over."); - return; - } - - if ((Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP == 0) || AntiFeedManager.getInstance().tryAddPlayer(AntiFeedManager.L2EVENT_ID, player, Config.DUALBOX_CHECK_MAX_L2EVENT_PARTICIPANTS_PER_IP)) - { - _registeredPlayers.add(player); - } - else - { - player.sendMessage("You have reached the maximum allowed participants per IP."); - } - } - - /** - * Removes the player from the participating players and the teams and restores his init stats before he registered at the event (loc, pvp, pk, title etc) - * @param player - */ - public static void removeAndResetPlayer(PlayerInstance player) - { - try - { - if (isParticipant(player)) - { - if (player.isDead()) - { - player.restoreExp(100.0); - player.doRevive(); - player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - } - - player.decayMe(); - player.spawnMe(player.getX(), player.getY(), player.getZ()); - player.broadcastUserInfo(); - - player.stopTransformation(true); - } - - if (player.getEventStatus() != null) - { - player.getEventStatus().restorePlayerStats(); - } - - player.setEventStatus(null); - - _registeredPlayers.remove(player); - final int teamId = getPlayerTeamId(player); - if (_teams.containsKey(teamId)) - { - _teams.get(teamId).remove(player); - } - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Error at unregisterAndResetPlayer in the event:" + e.getMessage(), e); - } - } - - /** - * The player's event status will be saved at _connectionLossData - * @param player - */ - public static void savePlayerEventStatus(PlayerInstance player) - { - _connectionLossData.put(player, player.getEventStatus()); - } - - /** - * If _connectionLossData contains the player, it will restore the player's event status. Also it will remove the player from the _connectionLossData. - * @param player - */ - public static void restorePlayerEventStatus(PlayerInstance player) - { - if (_connectionLossData.containsKey(player)) - { - player.setEventStatus(_connectionLossData.get(player)); - _connectionLossData.remove(player); - } - } - - /** - * If the event is ON or STANDBY, it will not start. Sets the event state to STANDBY and spawns registration NPCs - * @return a string with information if the event participation has been successfully started or not. - */ - public static String startEventParticipation() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - return "Cannot start event, it is on standby mode."; - } - case OFF: // Event is off, so no problem turning it on. - { - eventState = EventState.STANDBY; - break; - } - } - - // Register the event at AntiFeedManager and clean it for just in case if the event is already registered. - AntiFeedManager.getInstance().registerEvent(AntiFeedManager.L2EVENT_ID); - AntiFeedManager.getInstance().clear(AntiFeedManager.L2EVENT_ID); - - // Just in case - unspawnEventNpcs(); - _registeredPlayers.clear(); - // _npcs.clear(); - if (NpcData.getInstance().getTemplate(_npcId) == null) - { - return "Cannot start event, invalid npc id."; - } - - try (FileReader fr = new FileReader(Config.DATAPACK_ROOT + "/data/events/" + _eventName); - BufferedReader br = new BufferedReader(fr)) - { - _eventCreator = br.readLine(); - _eventInfo = br.readLine(); - } - - final Set temp = new HashSet<>(); - for (PlayerInstance player : World.getInstance().getPlayers()) - { - if (!player.isOnline()) - { - continue; - } - - if (!temp.contains(player)) - { - spawnEventNpc(player); - temp.add(player); - } - - World.getInstance().forEachVisibleObjectInRange(player, PlayerInstance.class, 1000, temp::add); - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event participation, an error has occured."; - } - - return "The event participation has been successfully started."; - } - - /** - * If the event is ON or OFF, it will not start. Sets the event state to ON, creates the teams, adds the registered players ordered by level at the teams and adds a new event status to the players. - * @return a string with information if the event has been successfully started or not. - */ - public static String startEvent() - { - try - { - switch (eventState) - { - case ON: - { - return "Cannot start event, it is already on."; - } - case STANDBY: - { - eventState = EventState.ON; - break; - } - case OFF: // Event is off, so no problem turning it on. - { - return "Cannot start event, it is off. Participation start is required."; - } - } - - // Clean the things we will use, just in case. - unspawnEventNpcs(); - _teams.clear(); - _connectionLossData.clear(); - - // Insert empty lists at _teams. - for (int i = 0; i < _teamsNumber; i++) - { - _teams.put(i + 1, ConcurrentHashMap.newKeySet()); - } - - int i = 0; - while (!_registeredPlayers.isEmpty()) - { - // Get the player with the biggest level - int max = 0; - PlayerInstance biggestLvlPlayer = null; - for (PlayerInstance player : _registeredPlayers) - { - if (player == null) - { - continue; - } - - if (max < player.getLevel()) - { - max = player.getLevel(); - biggestLvlPlayer = player; - } - } - - if (biggestLvlPlayer == null) - { - continue; - } - - _registeredPlayers.remove(biggestLvlPlayer); - _teams.get(i + 1).add(biggestLvlPlayer); - biggestLvlPlayer.setEventStatus(); - i = (i + 1) % _teamsNumber; - } - } - catch (Exception e) - { - LOGGER.warning("Event: " + e.getMessage()); - return "Cannot start event, an error has occured."; - } - - return "The event has been successfully started."; - } - - /** - * If the event state is OFF, it will not finish. Sets the event state to OFF, unregisters and resets the players, unspawns and clers the event NPCs, clears the teams, registered players, connection loss data, sets the teams number to 0, sets the event name to empty. - * @return a string with information if the event has been successfully stopped or not. - */ - public static String finishEvent() - { - switch (eventState) - { - case OFF: - { - return "Cannot finish event, it is already off."; - } - case STANDBY: - { - for (PlayerInstance player : _registeredPlayers) - { - removeAndResetPlayer(player); - } - - unspawnEventNpcs(); - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - eventState = EventState.OFF; - return "The event has been stopped at STANDBY mode, all players unregistered and all event npcs unspawned."; - } - case ON: - { - for (Set teamList : _teams.values()) - { - for (PlayerInstance player : teamList) - { - removeAndResetPlayer(player); - } - } - - eventState = EventState.OFF; - AntiFeedManager.getInstance().clear(AntiFeedManager.TVT_ID); - unspawnEventNpcs(); // Just in case - // _npcs.clear(); - _registeredPlayers.clear(); - _teams.clear(); - _connectionLossData.clear(); - _teamsNumber = 0; - _eventName = ""; - _npcId = 0; - _eventCreator = ""; - _eventInfo = ""; - return "The event has been stopped, all players unregistered and all event npcs unspawned."; - } - } - - return "The event has been successfully finished."; - } - - private static Map sortByValue(Map unsortMap) - { - final List> list = new LinkedList<>(unsortMap.entrySet()); - list.sort(Comparator.comparing(Entry::getValue)); - - final Map sortedMap = new LinkedHashMap<>(); - for (Entry entry : list) - { - sortedMap.put(entry.getKey(), entry.getValue()); - } - return sortedMap; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java deleted file mode 100644 index 534ac04f62..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/RabbitsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RabbitsManager extends AbstractEventManager> -{ - protected RabbitsManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Rabbits"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RabbitsManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RabbitsManager INSTANCE = new RabbitsManager(); - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java deleted file mode 100644 index 719e20495f..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/RaceManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class RaceManager extends AbstractEventManager> -{ - protected RaceManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("Race"); - if (event != null) - { - event.eventStart(null); - } - } - - public static RaceManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final RaceManager INSTANCE = new RaceManager(); - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java deleted file mode 100644 index d106fa64ad..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/events/TeamVsTeamManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.instancemanager.events; - -import org.l2jmobius.gameserver.instancemanager.QuestManager; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.ScheduleTarget; -import org.l2jmobius.gameserver.model.quest.Event; - -/** - * @author Mobius - */ -public class TeamVsTeamManager extends AbstractEventManager> -{ - protected TeamVsTeamManager() - { - } - - @Override - public void onInitialized() - { - } - - @ScheduleTarget - protected void startEvent() - { - final Event event = (Event) QuestManager.getInstance().getQuest("TvT"); - if (event != null) - { - event.eventStart(null); - } - } - - public static TeamVsTeamManager getInstance() - { - return SingletonHolder.INSTANCE; - } - - private static class SingletonHolder - { - protected static final TeamVsTeamManager INSTANCE = new TeamVsTeamManager(); - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java index b25efad7bd..ec47e1e66c 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1026,7 +1026,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return; } // Events. - else if (getActingPlayer().isOnCustomEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) + else if (getActingPlayer().isOnEvent() && target.isPlayable() && (getActingPlayer().getTeam() == target.getActingPlayer().getTeam())) { sendPacket(ActionFailed.STATIC_PACKET); return; @@ -5086,15 +5086,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe return false; } - /** - * Dummy method overriden in {@link PlayerInstance} - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent() - { - return false; - } - /** * Dummy method overriden in {@link PlayerInstance} * @return the clan id of current character. diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Playable.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Playable.java index 91982b9430..53b5ba8394 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Playable.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Playable.java @@ -307,6 +307,11 @@ public abstract class Playable extends Creature public abstract void restoreEffects(); + public boolean isOnEvent() + { + return false; + } + @Override public boolean isPlayable() { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Summon.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Summon.java index a3eb4ec1ae..c23dc4c05c 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Summon.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Summon.java @@ -1151,4 +1151,10 @@ public abstract class Summon extends Playable { return super.isTargetable() && getTemplate().isTargetable(); } + + @Override + public boolean isOnEvent() + { + return (_owner != null) && _owner.isOnEvent(); + } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index ea4c8396da..df2f3c09de 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -139,7 +139,6 @@ import org.l2jmobius.gameserver.instancemanager.RecipeManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.AccessLevel; import org.l2jmobius.gameserver.model.ArenaParticipantsHolder; import org.l2jmobius.gameserver.model.BlockList; @@ -195,7 +194,6 @@ import org.l2jmobius.gameserver.model.actor.tasks.player.WarnUserTakeBreakTask; import org.l2jmobius.gameserver.model.actor.tasks.player.WaterTask; import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate; import org.l2jmobius.gameserver.model.actor.transform.Transform; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanPrivilege; @@ -203,7 +201,6 @@ import org.l2jmobius.gameserver.model.clan.ClanWar; import org.l2jmobius.gameserver.model.cubic.CubicInstance; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.effects.EffectType; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged; @@ -239,7 +236,6 @@ import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; import org.l2jmobius.gameserver.model.holders.PetEvolveHolder; import org.l2jmobius.gameserver.model.holders.PlayerCollectionData; -import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.PurgePlayerHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; @@ -770,10 +766,6 @@ public class PlayerInstance extends Playable private final Map _lastCommissionInfos = new ConcurrentHashMap<>(); - @SuppressWarnings("rawtypes") - private final Map, AbstractEvent> _events = new ConcurrentHashMap<>(); - private boolean _isOnCustomEvent = false; - // protects a char from aggro mobs when getting up from fake death private long _recentFakeDeathEndTime = 0; @@ -796,7 +788,8 @@ public class PlayerInstance extends Playable private int _lastAmmunitionId = 0; /** Event parameters */ - private PlayerEventHolder eventStatus = null; + private boolean _isRegisteredOnEvent = false; + private boolean _isOnEvent = false; private byte _handysBlockCheckerEventArena = -1; @@ -2938,11 +2931,7 @@ public class PlayerInstance extends Playable */ public void standUp() { - if (GameEvent.isParticipant(this) && eventStatus.isSitForced()) - { - sendMessage("A dark force beyond your mortal understanding makes your knees to shake when you try to stand up..."); - } - else if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) + if (_waitTypeSitting && !isInStoreMode() && !isAlikeDead()) { if (getEffectList().isAffected(EffectFlag.RELAXING)) { @@ -4886,10 +4875,6 @@ public class PlayerInstance extends Playable { EventDispatcher.getInstance().notifyEventAsync(new OnPlayerPvPKill(pk, this), this); setTotalDeaths(getTotalDeaths() + 1); - if (GameEvent.isParticipant(pk)) - { - pk.getEventStatus().addKill(this); - } // pvp/pk item rewards if (!(Config.DISABLE_REWARDS_IN_INSTANCES && (getInstanceId() != 0)) && // @@ -5072,7 +5057,7 @@ public class PlayerInstance extends Playable private Collection onDieDropItem(Creature killer) { final List droppedItems = new ArrayList<>(); - if (GameEvent.isParticipant(this) || (killer == null)) + if (isOnEvent() || (killer == null)) { return droppedItems; } @@ -5407,7 +5392,7 @@ public class PlayerInstance extends Playable // Calculate the Experience loss long lostExp = 0; - if (!GameEvent.isParticipant(this)) + if (!isOnEvent()) { if (lvl < ExperienceData.getInstance().getMaxLevel()) { @@ -8227,7 +8212,7 @@ public class PlayerInstance extends Playable return false; } - if (isBlockedFromExit()) + if (isRegisteredOnEvent()) { return false; } @@ -8288,22 +8273,13 @@ public class PlayerInstance extends Playable // Check if the attacker is in olympia and olympia start if (attacker.isPlayer() && attacker.getActingPlayer().isInOlympiadMode()) { - if (_inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId())) - { - return true; - } - return false; + return _inOlympiadMode && _olympiadStart && (((PlayerInstance) attacker).getOlympiadGameId() == getOlympiadGameId()); } - if (_isOnCustomEvent && (getTeam() == attacker.getTeam())) - { - return false; - } - - // CoC needs this check? + // Check if the attacker is in an event if (isOnEvent()) { - return true; + return getTeam() != attacker.getTeam(); } // Check if the attacker is a Playable @@ -9479,12 +9455,12 @@ public class PlayerInstance extends Playable _noDuelReason = SystemMessageId.C1_IS_ALREADY_IN_A_DUEL; return false; } - if (_inOlympiadMode || isOnEvent(CeremonyOfChaosEvent.class)) + if (_inOlympiadMode) { _noDuelReason = SystemMessageId.C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_OR_THE_CEREMONY_OF_CHAOS_AND_THEREFORE_CANNOT_DUEL; return false; } - if (isOnEvent()) // custom event message + if (isOnEvent()) { _noDuelReason = SystemMessageId.C1_CANNOT_DUEL_BECAUSE_HE_OR_SHE_IS_CURRENTLY_ENGAGED_IN_BATTLE; return false; @@ -11309,12 +11285,6 @@ public class PlayerInstance extends Playable EventDispatcher.getInstance().notifyEventAsync(new OnPlayerMentorStatus(this, false), this); } - // we store all data from players who are disconnected while in an event in order to restore it in the next login - if (GameEvent.isParticipant(this)) - { - GameEvent.savePlayerEventStatus(this); - } - try { notifyFriends(FriendStatus.MODE_OFFLINE); @@ -13247,16 +13217,6 @@ public class PlayerInstance extends Playable _adminConfirmCmd = adminConfirmCmd; } - public void setBlockCheckerArena(byte arena) - { - _handysBlockCheckerEventArena = arena; - } - - public int getBlockCheckerArena() - { - return _handysBlockCheckerEventArena; - } - /** * Load PlayerInstance Recommendations data. */ @@ -13355,21 +13315,6 @@ public class PlayerInstance extends Playable return _contactList; } - public void setEventStatus() - { - eventStatus = new PlayerEventHolder(this); - } - - public void setEventStatus(PlayerEventHolder pes) - { - eventStatus = pes; - } - - public PlayerEventHolder getEventStatus() - { - return eventStatus; - } - public long getNotMoveUntil() { return _notMoveUntil; @@ -13429,13 +13374,6 @@ public class PlayerInstance extends Playable @Override public boolean canRevive() { - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && !listener.canRevive(this)) - { - return false; - } - } return _canRevive; } @@ -13449,66 +13387,40 @@ public class PlayerInstance extends Playable _canRevive = value; } - public boolean isOnCustomEvent() + public boolean isRegisteredOnEvent() { - return _isOnCustomEvent; + return _isRegisteredOnEvent || _isOnEvent; } - public void setOnCustomEvent(boolean value) + public void setRegisteredOnEvent(boolean value) { - _isOnCustomEvent = value; + _isRegisteredOnEvent = value; } - /** - * @return {@code true} if player is on event, {@code false} otherwise. - */ @Override public boolean isOnEvent() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this)) - { - return true; - } - } - return super.isOnEvent(); + return _isOnEvent; } - public boolean isBlockedFromExit() + public void setOnEvent(boolean value) { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingExit(this)) - { - return true; - } - } - return false; + _isOnEvent = value; } public boolean isBlockedFromDeathPenalty() { - if (_isOnCustomEvent) - { - return true; - } - for (AbstractEvent listener : _events.values()) - { - if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) - { - return true; - } - } - return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + return _isOnEvent || isAffected(EffectFlag.PROTECT_DEATH_PENALTY); + } + + public void setBlockCheckerArena(byte arena) + { + _handysBlockCheckerEventArena = arena; + } + + public int getBlockCheckerArena() + { + return _handysBlockCheckerEventArena; } public void setOriginalCpHpMp(double cp, double hp, double mp) @@ -14066,63 +13978,6 @@ public class PlayerInstance extends Playable sendPacket(new ExUserInfoInvenWeight(this)); } - /** - * @param event - * @return {@code true} if event is successfuly registered, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean registerOnEvent(AbstractEvent event) - { - return _events.putIfAbsent(event.getClass(), event) == null; - } - - /** - * @param event - * @return {@code true} if event is successfuly removed, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean removeFromEvent(AbstractEvent event) - { - return _events.remove(event.getClass()) != null; - } - - /** - * @param - * @param clazz - * @return the event instance or null in case events map is not initialized yet or event is not registered - */ - @SuppressWarnings("unchecked") - public > T getEvent(Class clazz) - { - for (AbstractEvent event : _events.values()) - { - if (clazz.isAssignableFrom(event.getClass())) - { - return (T) event; - } - } - return null; - } - - /** - * @return the first event that player participates on or null if he doesn't - */ - public AbstractEvent getEvent() - { - for (AbstractEvent event : _events.values()) - { - return event; - } - return null; - } - - /** - * @param clazz - * @return {@code true} if player is registered on specified event, {@code false} in case events map is not initialized yet or event is not registered - */ - public boolean isOnEvent(Class> clazz) - { - return _events.containsKey(clazz); - } - public Fishing getFishing() { return _fishing; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java deleted file mode 100644 index 6d78270eb6..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ /dev/null @@ -1,668 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.OptionalInt; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; -import org.l2jmobius.gameserver.instancemanager.InstanceManager; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.Party; -import org.l2jmobius.gameserver.model.Party.MessageType; -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.Npc; -import org.l2jmobius.gameserver.model.actor.Summon; -import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; -import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; -import org.l2jmobius.gameserver.model.events.EventDispatcher; -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.ceremonyofchaos.OnCeremonyOfChaosMatchResult; -import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDeath; -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout; -import org.l2jmobius.gameserver.model.holders.ItemHolder; -import org.l2jmobius.gameserver.model.holders.SkillHolder; -import org.l2jmobius.gameserver.model.instancezone.Instance; -import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; -import org.l2jmobius.gameserver.model.skills.Skill; -import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.serverpackets.DeleteObject; -import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; -import org.l2jmobius.gameserver.network.serverpackets.SkillCoolTime; -import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.network.serverpackets.appearance.ExCuriousHouseMemberUpdate; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseEnter; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseLeave; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseMemberList; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseObserveMode; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseRemainTime; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseResult; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosEvent extends AbstractEvent -{ - private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); - - private final int _id; - private final Instance _instance; - private final Set _monsters = ConcurrentHashMap.newKeySet(); - private long _battleStartTime = 0; - - public CeremonyOfChaosEvent(int id, InstanceTemplate template) - { - _id = id; - _instance = InstanceManager.getInstance().createInstance(template, null); - if (_instance.getEnterLocations().size() < CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()) - { - LOGGER.warning("There are more member slots: " + _instance.getEnterLocations().size() + " then instance entrance positions: " + CeremonyOfChaosManager.getInstance().getMaxPlayersInArena() + "!"); - } - } - - public int getId() - { - return _id; - } - - public int getInstanceId() - { - return _instance.getId(); - } - - public Instance getInstance() - { - return _instance; - } - - public Set getMonsters() - { - return _monsters; - } - - public void preparePlayers() - { - final Map members = getMembers(); - final ExCuriousHouseMemberList membersList = new ExCuriousHouseMemberList(_id, CeremonyOfChaosManager.getInstance().getMaxPlayersInArena(), members.values()); - final NpcHtmlMessage msg = new NpcHtmlMessage(0); - int index = 0; - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player.inObserverMode()) - { - player.leaveObserverMode(); - } - - if (player.isInDuel()) - { - player.setInDuel(0); - } - - // Remember player's last location - player.setLastLocation(); - - // Hide player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName("Challenger" + member.getPosition()); - app.setVisibleTitle(""); - app.setVisibleClanData(0, 0, 0, 0, 0); - - // Register the event instance - player.registerOnEvent(this); - - // Load the html - msg.setFile(player, "data/html/CeremonyOfChaos/started.htm"); - - // Remove buffs - player.stopAllEffectsExceptThoseThatLastThroughDeath(); - player.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); - - // Player shouldn't be able to move and is hidden - player.setImmobilized(true); - player.setInvisible(true); - - // Same goes for summon - player.getServitors().values().forEach(s -> - { - s.stopAllEffectsExceptThoseThatLastThroughDeath(); - s.setInvisible(true); - s.setImmobilized(true); - }); - - if (player.isFlyingMounted()) - { - player.untransform(); - } - - // If player is dead, revive it - if (player.isDead()) - { - player.doRevive(); - } - - // If player is sitting, stand up - if (player.isSitting()) - { - player.standUp(); - } - - // If player in party, leave it - final Party party = player.getParty(); - if (party != null) - { - party.removePartyMember(player, MessageType.EXPELLED); - } - - // Cancel any started action - player.abortAttack(); - player.abortCast(); - player.stopMove(null); - player.setTarget(null); - - // Unsummon pet - final Summon pet = player.getPet(); - if (pet != null) - { - pet.unSummon(player); - } - - // Unsummon agathion - if (player.getAgathionId() > 0) - { - player.setAgathionId(0); - } - - // The character’s HP, MP, and CP are fully recovered. - player.setCurrentHp(player.getMaxHp()); - player.setCurrentMp(player.getMaxMp()); - player.setCurrentCp(player.getMaxCp()); - - // Skill reuse timers for all skills that have less than 15 minutes of cooldown time are reset. - for (Skill skill : player.getAllSkills()) - { - if (skill.getReuseDelay() <= 900000) - { - player.enableSkill(skill); - } - } - - player.sendSkillList(); - player.sendPacket(new SkillCoolTime(player)); - - // Apply the Energy of Chaos skill - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Send Enter packet - player.sendPacket(ExCuriousHouseEnter.STATIC_PACKET); - - // Send all members - player.sendPacket(membersList); - - // Send the entrance html - player.sendPacket(msg); - - // Send support items to player - for (ItemHolder holder : CeremonyOfChaosManager.getInstance().getRewards(CeremonyOfChaosManager.INITIAL_ITEMS_KEY).calculateDrops()) - { - player.addItem("CoC", holder, null, true); - } - - // Teleport player to the arena - player.teleToLocation(_instance.getEnterLocations().get(index++), 0, _instance); - } - - final StatSet params = new StatSet(); - params.set("time", 60); - getTimers().addTimer("match_start_countdown", params, 100, null, null); - getTimers().addTimer("teleport_message1", 10000, null, null); - getTimers().addTimer("teleport_message2", 14000, null, null); - getTimers().addTimer("teleport_message3", 18000, null, null); - } - - public void startFight() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - player.sendPacket(SystemMessageId.THE_MATCH_HAS_BEGUN_FIGHT); - player.setImmobilized(false); - player.setInvisible(false); - player.broadcastInfo(); - player.sendPacket(new ExUserInfoAbnormalVisualEffect(player)); - player.getServitors().values().forEach(s -> - { - s.setInvisible(false); - s.setImmobilized(false); - s.broadcastInfo(); - }); - } - } - _battleStartTime = Chronos.currentTimeMillis(); - getTimers().addRepeatingTimer("update", 1000, null, null); - } - - public void stopFight() - { - final Map members = getMembers(); - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getLifeTime() == 0) - { - updateLifeTime(member); - } - } - validateWinner(); - - final List winners = getWinners(); - final List memberList = new ArrayList<>(members.size()); - SystemMessage msg = null; - if (winners.isEmpty() || (winners.size() > 1)) - { - msg = new SystemMessage(SystemMessageId.THE_DUEL_HAS_ENDED_IN_A_TIE); - } - else - { - final PlayerInstance winner = winners.get(0).getPlayer(); - if (winner != null) - { - msg = new SystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); - msg.addString(winner.getName()); - - // Rewards according to https://l2wiki.com/Ceremony_of_Chaos - final int marksRewarded = Rnd.get(2, 4); - winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks - - // Possible additional rewards - - // Improved Life Stone - if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(4)) - { - case 0: - { - winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) - break; - } - } - } - // Soul Crystal Fragment - else if (Rnd.get(10) < 3) // Chance to get reward (30%) - { - switch (Rnd.get(6)) - { - case 0: - { - winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) - break; - } - case 1: - { - winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) - break; - } - case 2: - { - winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) - break; - } - case 3: - { - winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) - break; - } - case 4: - { - winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) - break; - } - case 5: - { - winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) - break; - } - } - } - // Mysterious Belt - else if (Rnd.get(10) < 1) // Chance to get reward (10%) - { - winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt - } - - // Save monthly progress. - final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; - winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); - if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) - { - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); - GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); - } - } - } - - for (CeremonyOfChaosMember member : members.values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Send winner message - if (msg != null) - { - player.sendPacket(msg); - } - - // Send result - player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); - memberList.add(member); - } - } - getTimers().cancelTimer("update", null, null); - final StatSet params = new StatSet(); - params.set("time", 30); - getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); - EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, memberList)); - } - - private void teleportPlayersOut() - { - for (CeremonyOfChaosMember member : getMembers().values()) - { - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - // Leaves observer mode - if (player.inObserverMode()) - { - player.setObserving(false); - } - - // Revive the player - player.doRevive(); - - // Remove Energy of Chaos - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.INITIAL_BUFF_KEY, SkillHolder.class)) - { - player.stopSkillEffects(holder.getSkill()); - } - - // Apply buffs on players - for (SkillHolder holder : CeremonyOfChaosManager.getInstance().getVariables().getList(CeremonyOfChaosManager.END_BUFFS_KEYH, SkillHolder.class)) - { - holder.getSkill().activateSkill(player, player); - } - - // Remove quit button - player.sendPacket(ExCuriousHouseLeave.STATIC_PACKET); - - // Remove spectator mode - player.setObserving(false); - player.sendPacket(ExCuriousHouseObserveMode.STATIC_DISABLED); - - // Teleport player back - final Location lastLocation = player.getLastLocation(); - player.teleToLocation(lastLocation != null ? lastLocation : new Location(82201, 147587, -3473), null); - - // Restore player information - final PlayerAppearance app = player.getAppearance(); - app.setVisibleName(null); - app.setVisibleTitle(null); - app.setVisibleClanData(-1, -1, -1, -1, -1); - - // Remove player from event - player.removeFromEvent(this); - } - } - - clearMembers(); - _instance.destroy(); - } - - private void updateLifeTime(CeremonyOfChaosMember member) - { - member.setLifeTime(((int) (Chronos.currentTimeMillis() - _battleStartTime) / 1000)); - } - - public List getWinners() - { - final List winners = new ArrayList<>(); - final Map members = getMembers(); - - //@formatter:off - final OptionalInt winnerLifeTime = members.values().stream() - .mapToInt(CeremonyOfChaosMember::getLifeTime) - .max(); - - if(winnerLifeTime.isPresent()) - { - members.values().stream() - .sorted(Comparator.comparingLong(CeremonyOfChaosMember::getLifeTime) - .reversed() - .thenComparingInt(CeremonyOfChaosMember::getScore) - .reversed()) - .filter(member -> member.getLifeTime() == winnerLifeTime.getAsInt()) - .collect(Collectors.toCollection(() -> winners)); - } - - //@formatter:on - - return winners; - } - - private void validateWinner() - { - final List winners = getWinners(); - winners.forEach(winner -> winner.setResultType(winners.size() > 1 ? CeremonyOfChaosResult.TIE : CeremonyOfChaosResult.WIN)); - } - - @Override - public void onTimerEvent(String event, StatSet params, Npc npc, PlayerInstance player) - { - switch (event) - { - case "update": - { - final Map members = getMembers(); - - final int time = (int) CeremonyOfChaosManager.getInstance().getScheduler("stopFight").getRemainingTime(TimeUnit.SECONDS); - broadcastPacket(new ExCuriousHouseRemainTime(time)); - members.values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); - - // Validate winner - int count = 0; - for (CeremonyOfChaosMember member : members.values()) - { - if (!member.isDefeated()) - { - count++; - } - } - if (count <= 1) - { - stopFight(); - } - break; - } - case "teleport_message1": - { - broadcastPacket(new SystemMessage(SystemMessageId.PROVE_YOUR_ABILITIES)); - break; - } - case "teleport_message2": - { - broadcastPacket(new SystemMessage(SystemMessageId.THERE_ARE_NO_ALLIES_HERE_EVERYONE_IS_AN_ENEMY)); - break; - } - case "teleport_message3": - { - broadcastPacket(new SystemMessage(SystemMessageId.IT_WILL_BE_A_LONELY_BATTLE_BUT_I_WISH_YOU_VICTORY)); - break; - } - case "match_start_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.THE_MATCH_BEGINS_IN_S1_SEC); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if (time == 60) - { - params.set("time", 30); - getTimers().addTimer(event, params, 30 * 1000, null, null); - } - else if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if (time == 10) - { - params.set("time", 5); - getTimers().addTimer(event, params, 5 * 1000, null, null); - } - else if ((time > 1) && (time <= 5)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - break; - } - case "match_end_countdown": - { - final int time = params.getInt("time", 0); - final SystemMessage countdown = new SystemMessage(SystemMessageId.IN_S1_SECOND_S_YOU_WILL_BE_MOVED_TO_WHERE_YOU_WERE_BEFORE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - countdown.addByte(time); - broadcastPacket(countdown); - - // Reschedule - if ((time == 30) || (time == 20)) - { - params.set("time", time - 10); - getTimers().addTimer(event, params, 10 * 1000, null, null); - } - else if ((time > 0) && (time <= 10)) - { - params.set("time", time - 1); - getTimers().addTimer(event, params, 1000, null, null); - } - else if (time == 0) - { - teleportPlayersOut(); - } - break; - } - } - } - - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - private void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (player != null) - { - final Map members = getMembers(); - final int playerObjectId = player.getObjectId(); - if (members.containsKey(playerObjectId)) - { - removeMember(playerObjectId); - if (members.size() <= 1) - { - stopFight(); - } - } - } - } - - @RegisterEvent(EventType.ON_CREATURE_DEATH) - @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) - public void onPlayerDeath(OnCreatureDeath event) - { - if (event.getAttacker().isPlayer() && event.getTarget().isPlayer()) - { - final PlayerInstance attackerPlayer = event.getAttacker().getActingPlayer(); - final PlayerInstance targetPlayer = event.getTarget().getActingPlayer(); - final Map members = getMembers(); - final CeremonyOfChaosMember attackerMember = members.get(attackerPlayer.getObjectId()); - final CeremonyOfChaosMember targetMember = members.get(targetPlayer.getObjectId()); - final DeleteObject deleteObject = new DeleteObject(targetPlayer); - if ((attackerMember != null) && (targetMember != null)) - { - attackerMember.incrementScore(); - updateLifeTime(targetMember); - - // Mark player as defeated - targetMember.setDefeated(true); - - // Delete target player - for (CeremonyOfChaosMember member : members.values()) - { - if (member.getObjectId() != targetPlayer.getObjectId()) - { - deleteObject.sendTo(member.getPlayer()); - } - } - - // Make the target observer - targetPlayer.setObserving(true); - - // Make the target spectator - targetPlayer.sendPacket(ExCuriousHouseObserveMode.STATIC_ENABLED); - } - } - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java deleted file mode 100644 index e9d986ace4..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosMember.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.ceremonyofchaos; - -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventMember; - -/** - * @author UnAfraid - */ -public class CeremonyOfChaosMember extends AbstractEventMember -{ - private final int _position; - private int _lifeTime = 0; - private CeremonyOfChaosResult _resultType = CeremonyOfChaosResult.LOSE; - private boolean _isDefeated = false; - - public CeremonyOfChaosMember(PlayerInstance player, CeremonyOfChaosEvent event, int position) - { - super(player, event); - _position = position; - } - - public int getPosition() - { - return _position; - } - - public void setLifeTime(int time) - { - _lifeTime = time; - } - - public int getLifeTime() - { - return _lifeTime; - } - - public CeremonyOfChaosResult getResultType() - { - return _resultType; - } - - public void setResultType(CeremonyOfChaosResult resultType) - { - _resultType = resultType; - } - - public boolean isDefeated() - { - return _isDefeated; - } - - public void setDefeated(boolean isDefeated) - { - _isDefeated = isDefeated; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java index 1b7f3dd4a6..8eaf188159 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanEscape.java @@ -63,7 +63,7 @@ public class ConditionPlayerCanEscape extends Condition { canTeleport = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { canTeleport = false; } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java index 3ed2685a6f..94eee3bae6 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanSwitchSubclass.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.model.conditions; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.skills.Skill; @@ -61,12 +60,7 @@ public class ConditionPlayerCanSwitchSubclass extends Condition player.sendPacket(SystemMessageId.A_SUBCLASS_CANNOT_BE_CREATED_OR_CHANGED_WHILE_YOU_ARE_OVER_YOUR_WEIGHT_LIMIT); canSwitchSub = false; } - else if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHANGE_YOUR_SUBCLASS_WHILE_REGISTERING_FOR_THE_CEREMONY_OF_CHAOS); - canSwitchSub = false; - } - else if (player.isOnEvent()) + else if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot change your subclass while registered in an event."); canSwitchSub = false; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java index 245c7b084b..682d2ec2b1 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTransform.java @@ -64,7 +64,7 @@ public class ConditionPlayerCanTransform extends Condition player.sendPacket(SystemMessageId.YOU_CANNOT_TRANSFORM_WHILE_RIDING_A_PET); canTransform = false; } - else if (player.isOnCustomEvent()) + else if (player.isOnEvent()) { player.sendMessage("You cannot transform while registered on an event."); canTransform = false; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java deleted file mode 100644 index c7d0cb125f..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/AbstractEvent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.events.AbstractScript; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEvent>extends AbstractScript -{ - private final Map _members = new ConcurrentHashMap<>(); - private IEventState _state; - - public Map getMembers() - { - final Map members = new HashMap<>(); - for (Entry entry : _members.entrySet()) - { - final T member = entry.getValue(); - if (member != null) - { - final PlayerInstance player = member.getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - members.putIfAbsent(entry.getKey(), member); - } - } - } - return members; - } - - public T getMember(int objectId) - { - return getMembers().get(objectId); - } - - public void addMember(T member) - { - _members.put(member.getObjectId(), member); - } - - public void removeMember(int objectId) - { - _members.remove(objectId); - } - - public void clearMembers() - { - _members.clear(); - } - - public void broadcastPacket(IClientOutgoingPacket... packets) - { - _members.values().forEach(member -> member.sendPacket(packets)); - } - - public IEventState getState() - { - return _state; - } - - public void setState(IEventState state) - { - _state = state; - } - - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } - - /** - * @param player - * @return {@code true} if player is on event, {@code false} otherwise. - */ - public boolean isOnEvent(PlayerInstance player) - { - return _members.containsKey(player.getObjectId()); - } - - /** - * @param player - * @return {@code true} if player is blocked from leaving the game, {@code false} otherwise. - */ - public boolean isBlockingExit(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player is blocked from receiving death penalty upon death, {@code false} otherwise. - */ - public boolean isBlockingDeathPenalty(PlayerInstance player) - { - return false; - } - - /** - * @param player - * @return {@code true} if player can revive after death, {@code false} otherwise. - */ - public boolean canRevive(PlayerInstance player) - { - return true; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java deleted file mode 100644 index a1a0b03fdf..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventManager.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.Map; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedDeque; -import java.util.concurrent.atomic.AtomicReference; - -import org.l2jmobius.gameserver.model.StatSet; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.eventengine.drop.IEventDrop; -import org.l2jmobius.gameserver.model.events.AbstractScript; -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.OnPlayerLogout; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventManager>extends AbstractScript -{ - private String _name; - private StatSet _variables = StatSet.EMPTY_STATSET; - private Set _schedulers = Collections.emptySet(); - private Set _conditionalSchedulers = Collections.emptySet(); - private Map _rewards = Collections.emptyMap(); - - private final Set _events = ConcurrentHashMap.newKeySet(); - private final Queue _registeredPlayers = new ConcurrentLinkedDeque<>(); - private final AtomicReference _state = new AtomicReference<>(); - - public abstract void onInitialized(); - - /* ********************** */ - - public String getName() - { - return _name; - } - - public void setName(String name) - { - _name = name; - } - - /* ********************** */ - - public StatSet getVariables() - { - return _variables; - } - - public void setVariables(StatSet variables) - { - _variables = new StatSet(Collections.unmodifiableMap(variables.getSet())); - } - - /* ********************** */ - - public EventScheduler getScheduler(String name) - { - for (EventScheduler scheduler : _schedulers) - { - if (scheduler.getName().equalsIgnoreCase(name)) - { - return scheduler; - } - } - return null; - } - - public void setSchedulers(Set schedulers) - { - _schedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public Set getConditionalSchedulers() - { - return _conditionalSchedulers; - } - - public void setConditionalSchedulers(Set schedulers) - { - _conditionalSchedulers = Collections.unmodifiableSet(schedulers); - } - - /* ********************** */ - - public IEventDrop getRewards(String name) - { - return _rewards.get(name); - } - - public void setRewards(Map rewards) - { - _rewards = Collections.unmodifiableMap(rewards); - } - - /* ********************** */ - - public Set getEvents() - { - return _events; - } - - /* ********************** */ - - public void startScheduler() - { - _schedulers.forEach(EventScheduler::startScheduler); - } - - public void stopScheduler() - { - _schedulers.forEach(EventScheduler::stopScheduler); - } - - public void startConditionalSchedulers() - { - for (IConditionalEventScheduler scheduler : _conditionalSchedulers) - { - if (scheduler.test()) - { - scheduler.run(); - } - } - } - - /* ********************** */ - - public IEventState getState() - { - return _state.get(); - } - - public void setState(IEventState newState) - { - final IEventState previousState = _state.get(); - _state.set(newState); - onStateChange(previousState, newState); - } - - public boolean setState(IEventState previousState, IEventState newState) - { - if (_state.compareAndSet(previousState, newState)) - { - onStateChange(previousState, newState); - return true; - } - return false; - } - - /* ********************** */ - - public boolean registerPlayer(PlayerInstance player) - { - return canRegister(player, true) && _registeredPlayers.offer(player); - } - - public boolean unregisterPlayer(PlayerInstance player) - { - return _registeredPlayers.remove(player); - } - - public boolean isRegistered(PlayerInstance player) - { - return _registeredPlayers.contains(player); - } - - public boolean canRegister(PlayerInstance player, boolean sendMessage) - { - return !_registeredPlayers.contains(player); - } - - public Queue getRegisteredPlayers() - { - return _registeredPlayers; - } - - /* ********************** */ - @RegisterEvent(EventType.ON_PLAYER_LOGOUT) - @RegisterType(ListenerRegisterType.GLOBAL) - public void OnPlayerLogout(OnPlayerLogout event) - { - final PlayerInstance player = event.getPlayer(); - if (_registeredPlayers.remove(player)) - { - onUnregisteredPlayer(player); - } - } - - /* ********************** */ - - /** - * Triggered when a player is automatically removed from the event manager because he disconnected - * @param player - */ - protected void onUnregisteredPlayer(PlayerInstance player) - { - } - - /** - * Triggered when state is changed - * @param previousState - * @param newState - */ - protected void onStateChange(IEventState previousState, IEventState newState) - { - } - - /* ********************** */ - @Override - public String getScriptName() - { - return getClass().getSimpleName(); - } - - @Override - public Path getScriptPath() - { - return null; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java deleted file mode 100644 index 383739dc5f..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/AbstractEventMember.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.util.concurrent.atomic.AtomicInteger; - -import org.l2jmobius.gameserver.model.World; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - * @param - */ -public abstract class AbstractEventMember> -{ - private final int _objectId; - private final T _event; - private final AtomicInteger _score = new AtomicInteger(); - - public AbstractEventMember(PlayerInstance player, T event) - { - _objectId = player.getObjectId(); - _event = event; - } - - public int getObjectId() - { - return _objectId; - } - - public PlayerInstance getPlayer() - { - return World.getInstance().getPlayer(_objectId); - } - - public void sendPacket(IClientOutgoingPacket... packets) - { - final PlayerInstance player = getPlayer(); - if ((player != null) && player.isOnline() && !player.isInOfflineMode()) - { - for (IClientOutgoingPacket packet : packets) - { - player.sendPacket(packet); - } - } - } - - public int getClassId() - { - final PlayerInstance player = getPlayer(); - if (player != null) - { - return player.getClassId().getId(); - } - return 0; - } - - public void setScore(int score) - { - _score.set(score); - } - - public int getScore() - { - return _score.get(); - } - - public int incrementScore() - { - return _score.incrementAndGet(); - } - - public int decrementScore() - { - return _score.decrementAndGet(); - } - - public int addScore(int score) - { - return _score.addAndGet(score); - } - - public T getEvent() - { - return _event; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java deleted file mode 100644 index 518929826a..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/EventMethodNotification.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventMethodNotification -{ - private final AbstractEventManager _manager; - private final Method _method; - private final Object[] _args; - - /** - * @param manager - * @param methodName - * @param args - * @throws NoSuchMethodException - */ - public EventMethodNotification(AbstractEventManager manager, String methodName, List args) throws NoSuchMethodException - { - _manager = manager; - _method = manager.getClass().getDeclaredMethod(methodName, args.stream().map(Object::getClass).toArray(Class[]::new)); - _args = args.toArray(); - } - - public AbstractEventManager getManager() - { - return _manager; - } - - public Method getMethod() - { - return _method; - } - - public void execute() throws Exception - { - if (Modifier.isStatic(_method.getModifiers())) - { - invoke(null); - } - else - { - // Attempt to find getInstance() method - for (Method method : _manager.getClass().getMethods()) - { - if (Modifier.isStatic(method.getModifiers()) && (_manager.getClass().isAssignableFrom(method.getReturnType())) && (method.getParameterCount() == 0)) - { - final Object instance = method.invoke(null); - invoke(instance); - } - } - } - } - - private void invoke(Object instance) throws Exception - { - // Java 1.8 - // final boolean wasAccessible = _method.isAccessible(); - // Java 10 - final boolean wasAccessible = _method.canAccess(instance); - if (!wasAccessible) - { - _method.setAccessible(true); - } - _method.invoke(instance, _args); - _method.setAccessible(wasAccessible); - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java deleted file mode 100644 index 3769381acd..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/EventScheduler.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.commons.threads.ThreadPool; -import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.model.StatSet; - -import it.sauronsoftware.cron4j.PastPredictor; -import it.sauronsoftware.cron4j.Predictor; - -/** - * @author UnAfraid - */ -public class EventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(EventScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _pattern; - private final boolean _repeat; - private List _notifications; - private ScheduledFuture _task; - - public EventScheduler(AbstractEventManager manager, StatSet set) - { - _eventManager = manager; - _name = set.getString("name", ""); - _pattern = set.getString("minute", "*") + " " + set.getString("hour", "*") + " " + set.getString("dayOfMonth", "*") + " " + set.getString("month", "*") + " " + set.getString("dayOfWeek", "*"); - _repeat = set.getBoolean("repeat", false); - } - - public String getName() - { - return _name; - } - - public long getNextSchedule() - { - final Predictor predictor = new Predictor(_pattern); - return predictor.nextMatchingTime(); - } - - public long getNextSchedule(long fromTime) - { - final Predictor predictor = new Predictor(_pattern, fromTime); - return predictor.nextMatchingTime(); - } - - public long getPrevSchedule() - { - final PastPredictor predictor = new PastPredictor(_pattern); - return predictor.prevMatchingTime(); - } - - public long getPrevSchedule(long fromTime) - { - final PastPredictor predictor = new PastPredictor(_pattern, fromTime); - return predictor.prevMatchingTime(); - } - - public boolean isRepeating() - { - return _repeat; - } - - public void addEventNotification(EventMethodNotification notification) - { - if (_notifications == null) - { - _notifications = new ArrayList<>(); - } - _notifications.add(notification); - } - - public List getEventNotifications() - { - return _notifications; - } - - public void startScheduler() - { - if (_notifications == null) - { - LOGGER.info("Scheduler without notificator manager: " + _eventManager.getClass().getSimpleName() + " pattern: " + _pattern); - return; - } - - final Predictor predictor = new Predictor(_pattern); - final long nextSchedule = predictor.nextMatchingTime(); - final long timeSchedule = nextSchedule - Chronos.currentTimeMillis(); - if (timeSchedule <= (30 * 1000)) - { - LOGGER.warning("Wrong reschedule for " + _eventManager.getClass().getSimpleName() + " end up run in " + (timeSchedule / 1000) + " seconds!"); - ThreadPool.schedule(this::startScheduler, timeSchedule + 1000); - return; - } - - if (_task != null) - { - _task.cancel(false); - } - - _task = ThreadPool.schedule(() -> - { - run(); - updateLastRun(); - - if (_repeat) - { - ThreadPool.schedule(this::startScheduler, 1000); - } - }, timeSchedule); - } - - public boolean updateLastRun() - { - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("INSERT INTO event_schedulers (eventName, schedulerName, lastRun) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE eventName = ?, schedulerName = ?, lastRun = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, _name); - ps.setTimestamp(3, new Timestamp(Chronos.currentTimeMillis())); - ps.setString(4, _eventManager.getName()); - ps.setString(5, _name); - ps.setTimestamp(6, new Timestamp(Chronos.currentTimeMillis())); - ps.execute(); - return true; - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Failed to insert/update information for scheduled task manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - public void stopScheduler() - { - if (_task != null) - { - _task.cancel(false); - _task = null; - } - } - - public long getRemainingTime(TimeUnit unit) - { - return (_task != null) && !_task.isDone() ? _task.getDelay(unit) : 0; - } - - public void run() - { - for (EventMethodNotification notification : _notifications) - { - try - { - notification.execute(); - } - catch (Exception e) - { - LOGGER.warning("Failed to notify to event manager: " + notification.getManager().getClass().getSimpleName() + " method: " + notification.getMethod().getName()); - } - } - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java deleted file mode 100644 index 8f9beba7d0..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/IConditionalEventScheduler.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IConditionalEventScheduler -{ - boolean test(); - - void run(); -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java deleted file mode 100644 index a1db9c20b8..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/IEventState.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -/** - * @author UnAfraid - */ -public interface IEventState -{ -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java deleted file mode 100644 index 01a47eb7d1..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/ScheduleTarget.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author UnAfraid - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.SOURCE) -public @interface ScheduleTarget -{ -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java deleted file mode 100644 index 52e5787a4b..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/conditions/BetweenConditionalScheduler.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.util.Objects; -import java.util.logging.Logger; - -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class BetweenConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(BetweenConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - private final String _scheduler1; - private final String _scheduler2; - - public BetweenConditionalScheduler(AbstractEventManager eventManager, String name, String scheduler1, String scheduler2) - { - Objects.requireNonNull(eventManager); - Objects.requireNonNull(name); - Objects.requireNonNull(scheduler1); - Objects.requireNonNull(scheduler2); - - _eventManager = eventManager; - _name = name; - _scheduler1 = scheduler1; - _scheduler2 = scheduler2; - } - - @Override - public boolean test() - { - final EventScheduler scheduler1 = _eventManager.getScheduler(_scheduler1); - final EventScheduler scheduler2 = _eventManager.getScheduler(_scheduler2); - if (scheduler1 == null) - { - throw new NullPointerException("Scheduler1 not found: " + _scheduler1); - } - else if (scheduler2 == null) - { - throw new NullPointerException("Scheduler2 not found: " + _scheduler2); - } - - final long previousStart = scheduler1.getPrevSchedule(); - final long previousEnd = scheduler2.getPrevSchedule(); - return previousStart > previousEnd; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Main scheduler not found: " + _name); - } - mainScheduler.run(); - LOGGER.info("Event " + _eventManager.getClass().getSimpleName() + " will resume because is within the event period."); - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java deleted file mode 100644 index 58dec3f542..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/conditions/HaventRunConditionalScheduler.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.conditions; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.model.eventengine.AbstractEventManager; -import org.l2jmobius.gameserver.model.eventengine.EventScheduler; -import org.l2jmobius.gameserver.model.eventengine.IConditionalEventScheduler; - -/** - * @author UnAfraid - */ -public class HaventRunConditionalScheduler implements IConditionalEventScheduler -{ - private static final Logger LOGGER = Logger.getLogger(HaventRunConditionalScheduler.class.getName()); - private final AbstractEventManager _eventManager; - private final String _name; - - public HaventRunConditionalScheduler(AbstractEventManager eventManager, String name) - { - _eventManager = eventManager; - _name = name; - } - - @Override - public boolean test() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT lastRun FROM event_schedulers WHERE eventName = ? AND schedulerName = ?")) - { - ps.setString(1, _eventManager.getName()); - ps.setString(2, mainScheduler.getName()); - try (ResultSet rs = ps.executeQuery()) - { - if (rs.next()) - { - final long lastRun = rs.getTimestamp(1).getTime(); - final long lastPossibleRun = mainScheduler.getPrevSchedule(); - return (lastPossibleRun > lastRun) && (Math.abs(lastPossibleRun - lastRun) > 1000); - } - } - } - catch (SQLException e) - { - LOGGER.log(Level.WARNING, "Failed to retreive information for scheduled task event manager: " + _eventManager.getClass().getSimpleName() + " scheduler: " + _name, e); - } - return false; - } - - @Override - public void run() - { - final EventScheduler mainScheduler = _eventManager.getScheduler(_name); - if (mainScheduler == null) - { - throw new NullPointerException("Scheduler not found: " + _name); - } - - if (mainScheduler.updateLastRun()) - { - mainScheduler.run(); - } - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java deleted file mode 100644 index f4f1746b1b..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author UnAfraid - */ -public class EventDropGroup -{ - private final List _items = new ArrayList<>(); - private final double _chance; - - public EventDropGroup(double chance) - { - _chance = chance; - } - - public double getChance() - { - return _chance; - } - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java deleted file mode 100644 index 5a3da46555..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDropItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -/** - * @author UnAfraid - */ -public class EventDropItem -{ - private final int _id; - private final int _min; - private final int _max; - private final double _chance; - - public EventDropItem(int id, int min, int max, double chance) - { - _id = id; - _min = min; - _max = max; - _chance = chance; - } - - public int getId() - { - return _id; - } - - public int getMin() - { - return _min; - } - - public int getMax() - { - return _max; - } - - public double getChance() - { - return _chance; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java deleted file mode 100644 index 3220986aaa..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/EventDrops.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.function.Supplier; - -/** - * @author UnAfraid - */ -public enum EventDrops -{ - GROUPED(GroupedDrop::new), - NORMAL(NormalDrop::new); - - private final Supplier _supplier; - - private EventDrops(Supplier supplier) - { - _supplier = supplier; - } - - @SuppressWarnings("unchecked") - public T newInstance() - { - return (T) (_supplier.get()); - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java deleted file mode 100644 index 5766d47a81..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/GroupedDrop.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class GroupedDrop implements IEventDrop -{ - private final List _groups = new ArrayList<>(); - - public List getGroups() - { - return _groups; - } - - public void addGroup(EventDropGroup group) - { - _groups.add(group); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - for (EventDropGroup group : _groups) - { - if ((Rnd.nextDouble() * 100) < group.getChance()) - { - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : group.getItems()) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - break; - } - } - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java deleted file mode 100644 index a3c5178486..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/IEventDrop.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.Collection; - -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public interface IEventDrop -{ - Collection calculateDrops(); -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java deleted file mode 100644 index 1a99a540e0..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/eventengine/drop/NormalDrop.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.eventengine.drop; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.model.holders.ItemHolder; - -/** - * @author UnAfraid - */ -public class NormalDrop implements IEventDrop -{ - private final List _items = new ArrayList<>(); - - public List getItems() - { - return _items; - } - - public void addItem(EventDropItem item) - { - _items.add(item); - } - - @Override - public Collection calculateDrops() - { - final List rewards = new ArrayList<>(); - double totalChance = 0; - final double random = (Rnd.nextDouble() * 100); - for (EventDropItem item : _items) - { - totalChance += item.getChance(); - if (totalChance > random) - { - final long count = Rnd.get(item.getMin(), item.getMax()); - if (count > 0) - { - rewards.add(new ItemHolder(item.getId(), count)); - } - } - } - return rewards; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/events/EventType.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/events/EventType.java index 64db5ebeca..cea88eef7f 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/events/EventType.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/events/EventType.java @@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.model.events; import org.l2jmobius.commons.util.CommonUtil; import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; import org.l2jmobius.gameserver.model.events.impl.OnDayNightChange; -import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarFinish; import org.l2jmobius.gameserver.model.events.impl.clan.OnClanWarStart; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttack; @@ -206,9 +205,6 @@ public enum EventType // Olympiad events ON_OLYMPIAD_MATCH_RESULT(OnOlympiadMatchResult.class, void.class), - // Ceremony of Chaos events - ON_CEREMONY_OF_CHAOS_MATCH_RESULT(OnCeremonyOfChaosMatchResult.class, void.class), - // Playable events ON_PLAYABLE_EXP_CHANGED(OnPlayableExpChanged.class, void.class, TerminateReturn.class), diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java deleted file mode 100644 index fb0f2bb3da..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/events/impl/ceremonyofchaos/OnCeremonyOfChaosMatchResult.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos; - -import java.util.List; - -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.model.events.EventType; -import org.l2jmobius.gameserver.model.events.impl.IBaseEvent; - -/** - * @author UnAfraid - */ -public class OnCeremonyOfChaosMatchResult implements IBaseEvent -{ - private final List _winners; - private final List _members; - - public OnCeremonyOfChaosMatchResult(List winners, List members) - { - _winners = winners; - _members = members; - } - - public List getWinners() - { - return _winners; - } - - public List getMembers() - { - return _members; - } - - @Override - public EventType getType() - { - return EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java deleted file mode 100644 index a5f6f9f161..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/holders/PlayerEventHolder.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.model.holders; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.data.sql.CharNameTable; -import org.l2jmobius.gameserver.data.sql.ClanTable; -import org.l2jmobius.gameserver.model.Location; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; - -/** - * Player event holder, meant for restoring player after event has finished.
- * Allows you to restore following information about player: - *
    - *
  • Name
  • - *
  • Title
  • - *
  • Clan
  • - *
  • Location
  • - *
  • PvP Kills
  • - *
  • PK Kills
  • - *
  • Karma
  • - *
- * @author Nik, xban1x - */ -public class PlayerEventHolder -{ - private final PlayerInstance _player; - private final String _name; - private final String _title; - private final int _clanId; - private final Location _loc; - private final int _pvpKills; - private final int _pkKills; - private final int _reputation; - - private final Map _kills = new ConcurrentHashMap<>(); - private boolean _sitForced; - - public PlayerEventHolder(PlayerInstance player) - { - this(player, false); - } - - public PlayerEventHolder(PlayerInstance player, boolean sitForced) - { - _player = player; - _name = player.getName(); - _title = player.getTitle(); - _clanId = player.getClanId(); - _loc = new Location(player); - _pvpKills = player.getPvpKills(); - _pkKills = player.getPkKills(); - _reputation = player.getReputation(); - _sitForced = sitForced; - } - - public void restorePlayerStats() - { - _player.setName(_name); - if (Config.CACHE_CHAR_NAMES) - { - CharNameTable.getInstance().addName(_player); - } - _player.setTitle(_title); - _player.setClan(ClanTable.getInstance().getClan(_clanId)); - _player.teleToLocation(_loc, true); - _player.setPvpKills(_pvpKills); - _player.setPkKills(_pkKills); - _player.setReputation(_reputation); - } - - public void setSitForced(boolean sitForced) - { - _sitForced = sitForced; - } - - public boolean isSitForced() - { - return _sitForced; - } - - public Map getKills() - { - return Collections.unmodifiableMap(_kills); - } - - public void addKill(PlayerInstance player) - { - _kills.merge(player, 1, Integer::sum); - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/instancezone/Instance.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/instancezone/Instance.java index 29db6957ab..2c28c096bb 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/instancezone/Instance.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/instancezone/Instance.java @@ -978,7 +978,7 @@ public class Instance implements IIdentifiable, INamable */ public void onDeath(PlayerInstance player) { - if (!player.isOnCustomEvent() && (_template.getEjectTime() > 0)) + if (!player.isOnEvent() && (_template.getEjectTime() > 0)) { // Send message final SystemMessage sm = new SystemMessage(SystemMessageId.IF_YOU_ARE_NOT_RESURRECTED_IN_S1_MIN_YOU_WILL_BE_TELEPORTED_OUT_OF_THE_INSTANCE_ZONE); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/items/Item.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/items/Item.java index 10cd6a106a..d352cd042c 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/items/Item.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/items/Item.java @@ -37,7 +37,6 @@ import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.commission.CommissionItemType; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.events.ListenersContainer; @@ -149,7 +148,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable private boolean _freightable; private boolean _allowSelfResurrection; private boolean _isOlyRestricted; - private boolean _isCocRestricted; + private boolean _isEventRestricted; private boolean _forNpc; private boolean _common; private boolean _heroItem; @@ -224,7 +223,7 @@ public abstract class Item extends ListenersContainer implements IIdentifiable _freightable = set.getBoolean("is_freightable", false); _allowSelfResurrection = set.getBoolean("allow_self_resurrection", false); _isOlyRestricted = set.getBoolean("is_oly_restricted", false); - _isCocRestricted = set.getBoolean("is_coc_restricted", false); + _isEventRestricted = set.getBoolean("is_event_restricted", false); _forNpc = set.getBoolean("for_npc", false); _isAppearanceable = set.getBoolean("isAppearanceable", false); _isBlessed = set.getBoolean("blessed", false); @@ -867,9 +866,9 @@ public abstract class Item extends ListenersContainer implements IIdentifiable return false; } - if (_isCocRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent(CeremonyOfChaosEvent.class)))) + if (_isEventRestricted && (creature.isPlayer() && (creature.getActingPlayer().isOnEvent()))) { - creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_ITEM_IN_THE_TOURNAMENT); + creature.sendMessage("You cannot use this item in the event."); return false; } @@ -944,11 +943,11 @@ public abstract class Item extends ListenersContainer implements IIdentifiable } /** - * @return {@code true} if item cannot be used in Ceremony of Chaos games. + * @return {@code true} if item cannot be used in event games. */ - public boolean isCocRestrictedItem() + public boolean isEventRestrictedItem() { - return _isCocRestricted; + return _isEventRestricted; } public boolean isForNpc() diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java index 6f9fd9c00c..91beecf5ff 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/olympiad/OlympiadManager.java @@ -221,9 +221,9 @@ public class OlympiadManager { case CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on an Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } @@ -242,9 +242,9 @@ public class OlympiadManager } case NON_CLASSED: { - if (player.isOnEvent()) + if (player.isRegisteredOnEvent()) { - player.sendMessage("You can't join olympiad while participating on TvT Event."); + player.sendMessage("You can't join olympiad while participating on an event."); return false; } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java index faac3921be..e95dffcbba 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/residences/ClanHallAuction.java @@ -25,7 +25,6 @@ import java.util.Comparator; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -33,7 +32,6 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.xml.ClanHallData; -import org.l2jmobius.gameserver.instancemanager.ClanHallAuctionManager; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -186,9 +184,4 @@ public class ClanHallAuction { return _clanHallId; } - - public long getRemaingTime() - { - return ClanHallAuctionManager.getInstance().getScheduler("endAuction").getRemainingTime(TimeUnit.MILLISECONDS); - } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 6570c0d3ed..e5ba502fc8 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -1127,7 +1127,7 @@ public class SkillCaster implements Runnable } // Events. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { if (skill.hasEffectType(EffectType.TELEPORT)) // Disable teleport skills. { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java index 8a945eae48..d771a02bf5 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java @@ -42,9 +42,6 @@ import org.l2jmobius.gameserver.network.clientpackets.autoplay.ExRequestActivate import org.l2jmobius.gameserver.network.clientpackets.blessing.RequestBlessOptionCancel; import org.l2jmobius.gameserver.network.clientpackets.blessing.RequestBlessOptionEnchant; import org.l2jmobius.gameserver.network.clientpackets.blessing.RequestBlessOptionPutItem; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCancelCuriousHouse; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestCuriousHouseHtml; -import org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos.RequestJoinCuriousHouse; import org.l2jmobius.gameserver.network.clientpackets.classchange.ExRequestClassChange; import org.l2jmobius.gameserver.network.clientpackets.classchange.ExRequestClassChangeVerifying; import org.l2jmobius.gameserver.network.clientpackets.collection.RequestCollectionCloseUI; @@ -355,13 +352,13 @@ public enum ExIncomingPackets implements IIncomingPackets REQUEST_MENTEE_WAITING_LIST(0xB8, RequestMenteeWaitingList::new, ConnectionState.IN_GAME), REQUEST_CLAN_ASK_JOIN_BY_NAME(0xB9, RequestClanAskJoinByName::new, ConnectionState.IN_GAME), REQUEST_IN_ZONE_WAITING_TIME(0xBA, RequestInzoneWaitingTime::new, ConnectionState.IN_GAME), - REQUEST_JOIN_CURIOUS_HOUSE(0xBB, RequestJoinCuriousHouse::new, ConnectionState.IN_GAME), - REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, RequestCancelCuriousHouse::new, ConnectionState.IN_GAME), + REQUEST_JOIN_CURIOUS_HOUSE(0xBB, null, ConnectionState.IN_GAME), + REQUEST_CANCEL_CURIOUS_HOUSE(0xBC, null, ConnectionState.IN_GAME), REQUEST_LEAVE_CURIOUS_HOUSE(0xBD, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_LIST_CURIOUS_HOUSE(0xBE, null, ConnectionState.IN_GAME), REQUEST_OBSERVING_CURIOUS_HOUSE(0xBF, null, ConnectionState.IN_GAME), REQUEST_LEAVE_OBSERVING_CURIOUS_HOUSE(0xC0, null, ConnectionState.IN_GAME), - REQUEST_CURIOUS_HOUSE_HTML(0xC1, RequestCuriousHouseHtml::new, ConnectionState.IN_GAME), + REQUEST_CURIOUS_HOUSE_HTML(0xC1, null, ConnectionState.IN_GAME), REQUEST_CURIOUS_HOUSE_RECORD(0xC2, null, ConnectionState.IN_GAME), EX_SYSSTRING(0xC3, null, ConnectionState.IN_GAME), REQUEST_EX_TRY_TO_PUT_SHAPE_SHIFTING_TARGET_ITEM(0xC4, RequestExTryToPutShapeShiftingTargetItem::new, ConnectionState.IN_GAME), diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 3210d7446d..21f055e922 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -44,7 +44,6 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; -import org.l2jmobius.gameserver.instancemanager.events.GameEvent; import org.l2jmobius.gameserver.model.PlayerCondOverride; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; @@ -439,11 +438,6 @@ public class EnterWorld implements IClientIncomingPacket player.sendPacket(new ExRotation(player.getObjectId(), player.getHeading())); player.getInventory().applyItemSkills(); - if (GameEvent.isParticipant(player)) - { - GameEvent.restorePlayerEventStatus(player); - } - if (player.isCursedWeaponEquipped()) { CursedWeaponsManager.getInstance().getCursedWeapon(player.getCursedWeaponEquippedId()).cursedOnLogin(); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java index 061521f203..8d64270335 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestJoinParty.java @@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.request.PartyRequest; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; @@ -120,13 +119,7 @@ public class RequestJoinParty implements IClientIncomingPacket return; } - if (requestor.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (requestor.isOnEvent()) // custom event message + if (requestor.isRegisteredOnEvent()) { requestor.sendMessage("You cannot invite to a party while participating in an event."); return; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java index 369a4fa9b1..2db83440a2 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreBuy.java @@ -30,9 +30,7 @@ import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.util.Util; @@ -87,14 +85,7 @@ public class RequestPrivateStoreBuy implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 1f4efc1f49..31fc2c2ff1 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -26,9 +26,7 @@ import org.l2jmobius.gameserver.model.ItemRequest; import org.l2jmobius.gameserver.model.TradeList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; public class RequestPrivateStoreSell implements IClientIncomingPacket @@ -92,14 +90,7 @@ public class RequestPrivateStoreSell implements IClientIncomingPacket return; } - // Cannot set private store in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - client.sendPacket(SystemMessageId.YOU_CANNOT_OPEN_A_PRIVATE_STORE_OR_WORKSHOP_IN_THE_CEREMONY_OF_CHAOS); - return; - } - - if (player.isOnEvent()) // custom event message + if (player.isRegisteredOnEvent()) { player.sendMessage("You cannot open a private store while participating in an event."); return; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java index 7422523bd3..328bd7d26d 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestartPoint.java @@ -95,7 +95,7 @@ public class RequestRestartPoint implements IClientIncomingPacket } // Custom event resurrection management. - if (player.isOnCustomEvent()) + if (player.isOnEvent()) { for (AbstractEventListener listener : player.getListeners(EventType.ON_CREATURE_DEATH)) { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java index 2c51a98476..30bde486bc 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/Say2.java @@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.handler.ChatHandler; import org.l2jmobius.gameserver.handler.IChatHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.model.effects.EffectFlag; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat; @@ -166,12 +165,6 @@ public class Say2 implements IClientIncomingPacket return; } - if (player.isOnEvent(CeremonyOfChaosEvent.class)) - { - player.sendPacket(SystemMessageId.YOU_CANNOT_CHAT_IN_THE_CEREMONY_OF_CHAOS); - return; - } - if (player.isJailed() && Config.JAIL_DISABLE_CHAT && ((chatType == ChatType.WHISPER) || (chatType == ChatType.SHOUT) || (chatType == ChatType.TRADE) || (chatType == ChatType.HERO_VOICE))) { player.sendMessage("You can not chat with players outside of the jail."); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java deleted file mode 100644 index be0c427c2d..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCancelCuriousHouse.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestCancelCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().unregisterPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_TAKEN_OFF_THE_WAIT_LIST_YOU_MAY_ONLY_ENTER_THE_WAIT_LIST_ON_MON_THURS_EVERY_QUARTER_OF_AN_HOUR_FOR_5_MIN_BETWEEN_20_00_AND_23_40_IF_YOU_CANCEL_REGISTRATION_OR_CHOOSE_TO_FORFEIT_AFTER_ENTERING_A_MATCH_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_MUST_WAIT_UNTIL_THE_NEXT_CYCLE_TO_PARTICIPATE_IN_THE_CEREMONY_OF_CHAOS_UPON_ENTERING_THE_ARENA_ALL_BUFFS_EXCLUDING_VITALITY_BUFFS_ARE_REMOVED); - player.sendPacket(ExCuriousHouseState.IDLE_PACKET); - - if (CeremonyOfChaosManager.getInstance().getState() == CeremonyOfChaosState.PREPARING_FOR_TELEPORT) - { - player.prohibiteCeremonyOfChaos(); - } - } - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java deleted file mode 100644 index a4e6f04627..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestCuriousHouseHtml.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; - -/** - * @author Sdw - */ -public class RequestCuriousHouseHtml implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().canRegister(player, true)) - { - final NpcHtmlMessage message = new NpcHtmlMessage(0); - message.setFile(player, "data/html/CeremonyOfChaos/invite.htm"); - player.sendPacket(message); - } - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java deleted file mode 100644 index f0c221d875..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/ceremonyofchaos/RequestJoinCuriousHouse.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.clientpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketReader; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosState; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.network.GameClient; -import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; -import org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos.ExCuriousHouseState; - -/** - * @author Sdw - */ -public class RequestJoinCuriousHouse implements IClientIncomingPacket -{ - @Override - public boolean read(GameClient client, PacketReader packet) - { - // Nothing to read - return true; - } - - @Override - public void run(GameClient client) - { - final PlayerInstance player = client.getPlayer(); - if (player == null) - { - return; - } - - if (CeremonyOfChaosManager.getInstance().getState() != CeremonyOfChaosState.REGISTRATION) - { - return; - } - else if (CeremonyOfChaosManager.getInstance().isRegistered(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_ON_THE_WAITING_LIST_FOR_THE_CEREMONY_OF_CHAOS); - return; - } - - if (CeremonyOfChaosManager.getInstance().registerPlayer(player)) - { - player.sendPacket(SystemMessageId.YOU_ARE_NOW_ON_THE_WAITING_LIST_YOU_WILL_AUTOMATICALLY_BE_TELEPORTED_WHEN_THE_TOURNAMENT_STARTS_AND_WILL_BE_REMOVED_FROM_THE_WAITING_LIST_IF_YOU_LOG_OUT_IF_YOU_CANCEL_REGISTRATION_WITHIN_THE_LAST_MINUTE_OF_ENTERING_THE_ARENA_AFTER_SIGNING_UP_30_TIMES_OR_MORE_OR_FORFEIT_AFTER_ENTERING_THE_ARENA_30_TIMES_OR_MORE_DURING_A_CYCLE_YOU_BECOME_INELIGIBLE_FOR_PARTICIPATION_IN_THE_CEREMONY_OF_CHAOS_UNTIL_THE_NEXT_CYCLE_ALL_THE_BUFFS_EXCEPT_THE_VITALITY_BUFF_WILL_BE_REMOVED_ONCE_YOU_ENTER_THE_ARENAS); - player.sendPacket(SystemMessageId.ALL_BUFFS_LIKE_ROSY_SEDUCTIONS_AND_ART_OF_SEDUCTION_WILL_BE_REMOVED_SAYHA_S_GRACE_WILL_REMAIN); - player.sendPacket(ExCuriousHouseState.PREPARE_PACKET); - } - else - { - player.sendPacket(SystemMessageId.THERE_ARE_TOO_MANY_CHALLENGERS_YOU_CANNOT_PARTICIPATE_NOW); - } - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java index 22893c183a..b281e4e8b7 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/friend/RequestFriendInvite.java @@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.FakePlayerData; import org.l2jmobius.gameserver.model.BlockList; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; @@ -98,10 +97,10 @@ public class RequestFriendInvite implements IClientIncomingPacket return; } - // Cannot request friendship in Ceremony of Chaos event. - if (player.isOnEvent(CeremonyOfChaosEvent.class)) + // Cannot request friendship in an event. + if (player.isOnEvent()) { - client.sendPacket(SystemMessageId.YOU_CANNOT_INVITE_A_FRIEND_OR_PARTY_WHILE_PARTICIPATING_IN_THE_CEREMONY_OF_CHAOS); + player.sendMessage("You cannot request friendship while participating in an event."); return; } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java index 42636f5d2f..b13e910ebc 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/CharInfo.java @@ -26,8 +26,6 @@ import org.l2jmobius.gameserver.instancemanager.RankManager; import org.l2jmobius.gameserver.model.VariationInstance; import org.l2jmobius.gameserver.model.actor.instance.DecoyInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; @@ -123,8 +121,6 @@ public class CharInfo implements IClientOutgoingPacket public boolean write(PacketWriter packet) { OutgoingPackets.CHAR_INFO.writeId(packet); - final CeremonyOfChaosEvent event = _player.getEvent(CeremonyOfChaosEvent.class); - final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_player.getObjectId()) : null; packet.writeC(0x00); // Grand Crusade packet.writeD(_x); // Confirmed packet.writeD(_y); // Confirmed @@ -288,7 +284,7 @@ public class CharInfo implements IClientOutgoingPacket { packet.writeH(AbnormalVisualEffect.STEALTH.getClientId()); } - packet.writeC(cocPlayer != null ? cocPlayer.getPosition() : _player.isTrueHero() ? 100 : 0); + packet.writeC(_player.isTrueHero() ? 100 : 0); packet.writeC(_player.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory packet.writeC(_player.getAbilityPointsUsed()); // Used Ability Points diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java index a62954d653..735171b345 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/appearance/ExCuriousHouseMemberUpdate.java @@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets.appearance; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -33,24 +32,13 @@ public class ExCuriousHouseMemberUpdate implements IClientOutgoingPacket public int _currentHp; public int _currentCp; - public ExCuriousHouseMemberUpdate(CeremonyOfChaosMember member) + public ExCuriousHouseMemberUpdate(PlayerInstance player) { - _objId = member.getObjectId(); - final PlayerInstance player = member.getPlayer(); - if (player != null) - { - _maxHp = player.getMaxHp(); - _maxCp = player.getMaxCp(); - _currentHp = (int) player.getCurrentHp(); - _currentCp = (int) player.getCurrentCp(); - } - else - { - _maxHp = 0; - _maxCp = 0; - _currentHp = 0; - _currentCp = 0; - } + _objId = player.getObjectId(); + _maxHp = player.getMaxHp(); + _maxCp = player.getMaxCp(); + _currentHp = (int) player.getCurrentHp(); + _currentCp = (int) player.getCurrentCp(); } @Override diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java deleted file mode 100644 index 372432ef02..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseEnter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseEnter implements IClientOutgoingPacket -{ - public static final ExCuriousHouseEnter STATIC_PACKET = new ExCuriousHouseEnter(); - - private ExCuriousHouseEnter() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_ENTER.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java deleted file mode 100644 index 50e1e74725..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseLeave.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseLeave implements IClientOutgoingPacket -{ - public static final ExCuriousHouseLeave STATIC_PACKET = new ExCuriousHouseLeave(); - - private ExCuriousHouseLeave() - { - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_LEAVE.writeId(packet); - return true; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java deleted file mode 100644 index d26eee8d89..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseMemberList.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import java.util.Collection; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosMember; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseMemberList implements IClientOutgoingPacket -{ - private final int _id; - private final int _maxPlayers; - private final Collection _players; - - public ExCuriousHouseMemberList(int id, int maxPlayers, Collection players) - { - _id = id; - _maxPlayers = maxPlayers; - _players = players; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_MEMBER_LIST.writeId(packet); - - packet.writeD(_id); - packet.writeD(_maxPlayers); - packet.writeD(_players.size()); - for (CeremonyOfChaosMember cocPlayer : _players) - { - final PlayerInstance player = cocPlayer.getPlayer(); - packet.writeD(cocPlayer.getObjectId()); - packet.writeD(cocPlayer.getPosition()); - if (player != null) - { - packet.writeD(player.getMaxHp()); - packet.writeD(player.getMaxCp()); - packet.writeD((int) player.getCurrentHp()); - packet.writeD((int) player.getCurrentCp()); - } - else - { - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - packet.writeD(0x00); - } - } - return true; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java deleted file mode 100644 index 14dca9be4a..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseObserveMode.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author UnAfraid - */ -public class ExCuriousHouseObserveMode implements IClientOutgoingPacket -{ - public static final ExCuriousHouseObserveMode STATIC_ENABLED = new ExCuriousHouseObserveMode(0); - public static final ExCuriousHouseObserveMode STATIC_DISABLED = new ExCuriousHouseObserveMode(1); - - private final int _spectating; - - private ExCuriousHouseObserveMode(int spectating) - { - _spectating = spectating; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_OBSERVE_MODE.writeId(packet); - packet.writeC(_spectating); - return true; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java deleted file mode 100644 index b71caa5f14..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseRemainTime.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseRemainTime implements IClientOutgoingPacket -{ - private final int _time; - - public ExCuriousHouseRemainTime(int time) - { - _time = time; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_REMAIN_TIME.writeId(packet); - packet.writeD(_time); - - return true; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java deleted file mode 100644 index 1f09c4de0d..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseResult.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; -import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; -import org.l2jmobius.gameserver.model.ceremonyofchaos.CeremonyOfChaosEvent; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseResult implements IClientOutgoingPacket -{ - private final CeremonyOfChaosResult _result; - private final CeremonyOfChaosEvent _event; - - public ExCuriousHouseResult(CeremonyOfChaosResult result, CeremonyOfChaosEvent event) - { - _result = result; - _event = event; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_RESULT.writeId(packet); - packet.writeD(_event.getId()); - packet.writeH(_result.ordinal()); - packet.writeD(CeremonyOfChaosManager.getInstance().getMaxPlayersInArena()); - packet.writeD(_event.getMembers().size()); - _event.getMembers().values().forEach(m -> - { - packet.writeD(m.getObjectId()); - packet.writeD(m.getPosition()); - packet.writeD(m.getClassId()); - packet.writeD(m.getLifeTime()); - packet.writeD(m.getScore()); - }); - return true; - } -} diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java deleted file mode 100644 index abf627ab72..0000000000 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/ceremonyofchaos/ExCuriousHouseState.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.network.serverpackets.ceremonyofchaos; - -import org.l2jmobius.commons.network.PacketWriter; -import org.l2jmobius.gameserver.network.OutgoingPackets; -import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; - -/** - * @author Sdw - */ -public class ExCuriousHouseState implements IClientOutgoingPacket -{ - public static final ExCuriousHouseState IDLE_PACKET = new ExCuriousHouseState(0); - public static final ExCuriousHouseState REGISTRATION_PACKET = new ExCuriousHouseState(1); - public static final ExCuriousHouseState PREPARE_PACKET = new ExCuriousHouseState(2); - public static final ExCuriousHouseState STARTING_PACKET = new ExCuriousHouseState(3); - - private final int _state; - - public ExCuriousHouseState(int state) - { - _state = state; - } - - @Override - public boolean write(PacketWriter packet) - { - OutgoingPackets.EX_CURIOUS_HOUSE_STATE.writeId(packet); - packet.writeD(_state); - return true; - } -} \ No newline at end of file diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java index 32f4a05d7b..55d1c4bcfd 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExOneDayReceiveRewardList.java @@ -19,9 +19,9 @@ package org.l2jmobius.gameserver.network.serverpackets.dailymission; import java.time.LocalDate; import java.util.Collection; import java.util.Collections; -import java.util.function.Function; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.xml.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; @@ -29,28 +29,28 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; -import it.sauronsoftware.cron4j.Predictor; - /** * @author Sdw */ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket { - final PlayerInstance _player; - private final Collection _rewards; - private static final Function _remainTime = pattern -> (new Predictor(pattern).nextMatchingTime() - Chronos.currentTimeMillis()) / 1000; + private static final SchedulingPattern DAILY_REUSE_PATTERN = new SchedulingPattern("30 6 * * *"); + private static final SchedulingPattern WEEKLY_REUSE_PATTERN = new SchedulingPattern("30 6 * * 1"); + private static final SchedulingPattern MONTHLY_REUSE_PATTERN = new SchedulingPattern("30 6 1 * *"); - private final long _dayRemainTime; - private final long _weekRemainTime; - private final long _monthRemainTime; + private final PlayerInstance _player; + private final Collection _rewards; + private final int _dayRemainTime; + private final int _weekRemainTime; + private final int _monthRemainTime; public ExOneDayReceiveRewardList(PlayerInstance player, boolean sendRewards) { _player = player; _rewards = sendRewards ? DailyMissionData.getInstance().getDailyMissionData(player) : Collections.emptyList(); - _dayRemainTime = _remainTime.apply("30 6 * * *"); - _weekRemainTime = _remainTime.apply("30 6 * * 1"); - _monthRemainTime = _remainTime.apply("30 6 1 * *"); + _dayRemainTime = (int) ((DAILY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _weekRemainTime = (int) ((WEEKLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); + _monthRemainTime = (int) ((MONTHLY_REUSE_PATTERN.next(Chronos.currentTimeMillis()) - Chronos.currentTimeMillis()) / 1000); } @Override @@ -63,9 +63,9 @@ public class ExOneDayReceiveRewardList implements IClientOutgoingPacket OutgoingPackets.EX_ONE_DAY_RECEIVE_REWARD_LIST.writeId(packet); - packet.writeD((int) _dayRemainTime); - packet.writeD((int) _weekRemainTime); - packet.writeD((int) _monthRemainTime); + packet.writeD(_dayRemainTime); + packet.writeD(_weekRemainTime); + packet.writeD(_monthRemainTime); packet.writeC(0x17); packet.writeD(_player.getClassId().getId()); packet.writeD(LocalDate.now().getDayOfWeek().ordinal()); // Day of week diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java index d6580161c7..68100c5557 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/util/OfflineTradeUtil.java @@ -48,7 +48,7 @@ public class OfflineTradeUtil */ private static boolean offlineMode(PlayerInstance player) { - if ((player == null) || player.isInOlympiadMode() || player.isBlockedFromExit() || player.isJailed() || (player.getVehicle() != null)) + if ((player == null) || player.isInOlympiadMode() || player.isRegisteredOnEvent() || player.isJailed() || (player.getVehicle() != null)) { return false; }