diff --git a/L2J_DataPack_BETA/dist/game/config/adminCommands.xml b/L2J_DataPack_BETA/dist/game/config/adminCommands.xml index fbc40e8a78a5afe0ee6e90266880e6f37e2c5149..d535518a5ad36ecf25cce104314b35972fbdc5c9 100644 --- a/L2J_DataPack_BETA/dist/game/config/adminCommands.xml +++ b/L2J_DataPack_BETA/dist/game/config/adminCommands.xml @@ -1,5 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../data/xsd/adminCommands.xsd"> + <!-- ADMIN COND EXCEPTIONS --> + <admin command="admin_exceptions" accessLevel="7" /> + <admin command="admin_set_exception" accessLevel="7" confirmDlg="true" /> + <!-- ADMIN ADMIN --> <admin command="admin_admin" accessLevel="7" /> <admin command="admin_admin1" accessLevel="7" /> diff --git a/L2J_DataPack_BETA/dist/game/data/html/admin/cond_override.htm b/L2J_DataPack_BETA/dist/game/data/html/admin/cond_override.htm new file mode 100644 index 0000000000000000000000000000000000000000..8923881038f57cd3c0d1c779d8f91e548bcab5fb --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/html/admin/cond_override.htm @@ -0,0 +1,17 @@ +<html><title>Condition Exceptions</title><body> +<center> +<table width=270> +<tr> +<td width=45><button value="Main" action="bypass -h admin_admin" width=45 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> +<td width=180><center>Condition Exceptions</center></td> +<td width=45><button value="Back" action="bypass -h admin_admin7" width=45 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> +</tr> +</table> +<table width=260><tr> +<td width=40><button value="Enable all" action="bypass -h admin_set_exception enable_all" width=80 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> +<td width=110></td> +<td width=40><button value="Disable all" action="bypass -h admin_set_exception disable_all" width=80 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> +</tr></table> +<table width="275" bgcolor="666666"> +%cond_table% +</table> \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/html/admin/gm_menu.htm b/L2J_DataPack_BETA/dist/game/data/html/admin/gm_menu.htm index 4a35fae3f3c11af12b934471eac7d1722ad41370..9b00ca19ccf09edb3aba4f0b3a18b37a87b1140f 100644 --- a/L2J_DataPack_BETA/dist/game/data/html/admin/gm_menu.htm +++ b/L2J_DataPack_BETA/dist/game/data/html/admin/gm_menu.htm @@ -33,7 +33,7 @@ </tr><tr> <td><button value="Instance" action="bypass -h admin_help instancezone.htm" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> <td><button value="Events" action="bypass -h admin_event_menu" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> -<td></td> +<td><button value="Exceptions" action="bypass -h admin_exceptions" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> <td><button value="Server" action="bypass -h admin_admin4" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> </tr> </table><br1> diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate.java index 9f405b8e7a3f55dd9d406751b141951872936d19..c73bc3baa2d4bcbef5eb2dcd02188968e12bf4be 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/npc/Teleports/Warpgate/Warpgate.java @@ -20,6 +20,7 @@ import ai.npc.AbstractNpcAI; import com.l2jserver.gameserver.ThreadPoolManager; import com.l2jserver.gameserver.instancemanager.HellboundManager; +import com.l2jserver.gameserver.model.PcCondOverride; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; @@ -62,11 +63,7 @@ public class Warpgate extends AbstractNpcAI } } st = player.getQuestState(Q00133_ThatsBloodyHot.class.getSimpleName()); - if ((st != null) && st.isCompleted()) - { - return true; - } - return false; + return ((st != null) && st.isCompleted()); } @Override @@ -100,7 +97,7 @@ public class Warpgate extends AbstractNpcAI { if (character.isPlayer()) { - if (!canEnter(character.getActingPlayer()) && !character.isGM()) + if (!canEnter(character.getActingPlayer()) && !character.canOverrideCond(PcCondOverride.ZONE_CONDITIONS)) { ThreadPoolManager.getInstance().scheduleGeneral(new Teleport(character), 1000); } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/custom/Validators/SkillTransferValidator.java b/L2J_DataPack_BETA/dist/game/data/scripts/custom/Validators/SkillTransferValidator.java index 359892e432fb4e835e1dc2db054341a27e2f81f6..87c1fefada1943cbeb61bd29666ff55e6ddcc7a2 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/custom/Validators/SkillTransferValidator.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/custom/Validators/SkillTransferValidator.java @@ -18,6 +18,7 @@ import com.l2jserver.Config; import com.l2jserver.gameserver.datatables.ClassListData; import com.l2jserver.gameserver.datatables.SkillTreesData; import com.l2jserver.gameserver.model.L2SkillLearn; +import com.l2jserver.gameserver.model.PcCondOverride; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.holders.ItemHolder; @@ -93,7 +94,7 @@ public final class SkillTransferValidator extends L2Script } } - if (Config.SKILL_CHECK_ENABLE && (!player.isGM() || Config.SKILL_CHECK_GM)) + if (Config.SKILL_CHECK_ENABLE && (!player.canOverrideCond(PcCondOverride.SKILL_CONDITIONS) || Config.SKILL_CHECK_GM)) { long count = PORMANDERS[index].getCount() - player.getInventory().getInventoryItemCount(PORMANDERS[index].getId(), -1, false); for (L2Skill sk : player.getAllSkills()) diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/custom/Validators/SubClassSkills.java b/L2J_DataPack_BETA/dist/game/data/scripts/custom/Validators/SubClassSkills.java index 46556fb1b95419fd8155643fae5250a20c387380..dc8b6a54e8a6ca86ea438e56f559b3792a83335c 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/custom/Validators/SubClassSkills.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/custom/Validators/SubClassSkills.java @@ -20,6 +20,7 @@ import javolution.util.FastList; import com.l2jserver.Config; import com.l2jserver.gameserver.datatables.ClassListData; +import com.l2jserver.gameserver.model.PcCondOverride; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.model.quest.Quest; @@ -73,7 +74,7 @@ public final class SubClassSkills extends Quest if (!Config.SKILL_CHECK_ENABLE) return null; - if (player.isGM() && !Config.SKILL_CHECK_GM) + if (player.canOverrideCond(PcCondOverride.SKILL_CONDITIONS) && !Config.SKILL_CHECK_GM) return null; final L2Skill[] certSkills = getCertSkills(player); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java index 56a2d8fd991e43bfc52b1506e831cc9f11c7e11d..f23a80ddb1d694e39914fc3b6d7f69d29ab8e5b7 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java @@ -40,6 +40,7 @@ import handlers.admincommandhandlers.AdminCache; import handlers.admincommandhandlers.AdminCamera; import handlers.admincommandhandlers.AdminChangeAccessLevel; import handlers.admincommandhandlers.AdminClan; +import handlers.admincommandhandlers.AdminPcCondOverride; import handlers.admincommandhandlers.AdminCreateItem; import handlers.admincommandhandlers.AdminCursedWeapons; import handlers.admincommandhandlers.AdminDebug; @@ -371,6 +372,7 @@ public class MasterHandler AdminChangeAccessLevel.class, AdminCHSiege.class, AdminClan.class, + AdminPcCondOverride.class, AdminCreateItem.class, AdminCursedWeapons.class, AdminDebug.class, diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminPcCondOverride.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminPcCondOverride.java new file mode 100644 index 0000000000000000000000000000000000000000..4d9986084d830bd61698a52a502177e58972166c --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminPcCondOverride.java @@ -0,0 +1,124 @@ +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ +package handlers.admincommandhandlers; + +import java.util.StringTokenizer; + +import com.l2jserver.gameserver.handler.IAdminCommandHandler; +import com.l2jserver.gameserver.model.PcCondOverride; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage; +import com.l2jserver.gameserver.util.Util; + +/** + * Handler provides ability to override server's conditions for admin. + * @author UnAfraid + */ +public class AdminPcCondOverride implements IAdminCommandHandler +{ + private static final String[] COMMANDS = + { + "admin_exceptions", + "admin_set_exception", + }; + + @Override + public boolean useAdminCommand(String command, L2PcInstance activeChar) + { + StringTokenizer st = new StringTokenizer(command); + if (st.hasMoreTokens()) + { + switch (st.nextToken()) // command + { + case "admin_exceptions": + { + NpcHtmlMessage msg = new NpcHtmlMessage(5, 1); + msg.setFile(activeChar.getHtmlPrefix(), "data/html/admin/cond_override.htm"); + StringBuilder sb = new StringBuilder(); + for (PcCondOverride ex : PcCondOverride.values()) + { + sb.append("<tr><td fixwidth=\"180\">" + ex.getDescription() + ":</td><td><a action=\"bypass -h admin_set_exception " + ex.ordinal() + "\">" + (activeChar.canOverrideCond(ex) ? "Disable" : "Enable") + "</a></td></tr>"); + } + msg.replace("%cond_table%", sb.toString()); + activeChar.sendPacket(msg); + break; + } + case "admin_set_exception": + { + if (st.hasMoreTokens()) + { + String token = st.nextToken(); + if (Util.isDigit(token)) + { + PcCondOverride ex = PcCondOverride.getCondOverride(Integer.valueOf(token)); + if (ex != null) + { + if (activeChar.canOverrideCond(ex)) + { + activeChar.removeOverridedCond(ex); + activeChar.sendMessage("You've disabled " + ex.getDescription()); + } + else + { + activeChar.addOverrideCond(ex); + activeChar.sendMessage("You've enabled " + ex.getDescription()); + } + } + } + else + { + switch (token) + { + case "enable_all": + { + for (PcCondOverride ex : PcCondOverride.values()) + { + if (!activeChar.canOverrideCond(ex)) + { + activeChar.addOverrideCond(ex); + } + } + activeChar.sendMessage("All condition exceptions have been enabled."); + break; + } + case "disable_all": + { + for (PcCondOverride ex : PcCondOverride.values()) + { + if (activeChar.canOverrideCond(ex)) + { + activeChar.removeOverridedCond(ex); + } + } + activeChar.sendMessage("All condition exceptions have been disabled."); + break; + } + } + } + useAdminCommand(COMMANDS[0], activeChar); + } + break; + } + } + } + return true; + } + + @Override + public String[] getAdminCommandList() + { + return COMMANDS; + } +} diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatHeroVoice.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatHeroVoice.java index cb3d1a38cffaf04376e2a17a474eecc31a43ef64..d7a8ee3d2eaccdc14e38298e37ba8c0194c6177c 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatHeroVoice.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatHeroVoice.java @@ -18,6 +18,7 @@ import com.l2jserver.Config; import com.l2jserver.gameserver.handler.IChatHandler; import com.l2jserver.gameserver.model.BlockList; import com.l2jserver.gameserver.model.L2World; +import com.l2jserver.gameserver.model.PcCondOverride; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.CreatureSay; @@ -40,7 +41,7 @@ public class ChatHeroVoice implements IChatHandler @Override public void handleChat(int type, L2PcInstance activeChar, String target, String text) { - if (activeChar.isHero() || activeChar.isGM()) + if (activeChar.isHero() || activeChar.canOverrideCond(PcCondOverride.CHAT_CONDITIONS)) { if (activeChar.isChatBanned() && Util.contains(Config.BAN_CHAT_CHANNELS, type)) { diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatShout.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatShout.java index 03b1c1b107d395d277d49ca870f126debb1ff7af..945b234f323ae4e653ad9d4f072d9fa4b6ff0e12 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatShout.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatShout.java @@ -19,6 +19,7 @@ import com.l2jserver.gameserver.handler.IChatHandler; import com.l2jserver.gameserver.instancemanager.MapRegionManager; import com.l2jserver.gameserver.model.BlockList; import com.l2jserver.gameserver.model.L2World; +import com.l2jserver.gameserver.model.PcCondOverride; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.CreatureSay; @@ -51,7 +52,7 @@ public class ChatShout implements IChatHandler L2PcInstance[] pls = L2World.getInstance().getAllPlayersArray(); - if (Config.DEFAULT_GLOBAL_CHAT.equalsIgnoreCase("on") || (Config.DEFAULT_GLOBAL_CHAT.equalsIgnoreCase("gm") && activeChar.isGM())) + if (Config.DEFAULT_GLOBAL_CHAT.equalsIgnoreCase("on") || (Config.DEFAULT_GLOBAL_CHAT.equalsIgnoreCase("gm") && activeChar.canOverrideCond(PcCondOverride.CHAT_CONDITIONS))) { int region = MapRegionManager.getInstance().getMapRegionLocId(activeChar); for (L2PcInstance player : pls) @@ -62,7 +63,7 @@ public class ChatShout implements IChatHandler } else if (Config.DEFAULT_GLOBAL_CHAT.equalsIgnoreCase("global")) { - if (!activeChar.isGM() && !activeChar.getFloodProtectors().getGlobalChat().tryPerformAction("global chat")) + if (!activeChar.canOverrideCond(PcCondOverride.CHAT_CONDITIONS) && !activeChar.getFloodProtectors().getGlobalChat().tryPerformAction("global chat")) { activeChar.sendMessage("Do not spam shout channel."); return; diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatTell.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatTell.java index f4844ad89990ff0ab5fbcd66e003f8bc986966a0..a717bd2680fa5304a5487b8ce4cf3f9f7c9a184d 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatTell.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatTell.java @@ -18,6 +18,7 @@ import com.l2jserver.Config; import com.l2jserver.gameserver.handler.IChatHandler; import com.l2jserver.gameserver.model.BlockList; import com.l2jserver.gameserver.model.L2World; +import com.l2jserver.gameserver.model.PcCondOverride; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.CreatureSay; @@ -46,7 +47,7 @@ public class ChatTell implements IChatHandler return; } - if (Config.JAIL_DISABLE_CHAT && activeChar.isInJail() && !activeChar.isGM()) + if (Config.JAIL_DISABLE_CHAT && activeChar.isInJail() && !activeChar.canOverrideCond(PcCondOverride.CHAT_CONDITIONS)) { activeChar.sendPacket(SystemMessageId.CHATTING_PROHIBITED); return; @@ -63,7 +64,7 @@ public class ChatTell implements IChatHandler if (receiver != null && !receiver.isSilenceMode(activeChar.getObjectId())) { - if (Config.JAIL_DISABLE_CHAT && receiver.isInJail() && !activeChar.isGM()) + if (Config.JAIL_DISABLE_CHAT && receiver.isInJail() && !activeChar.canOverrideCond(PcCondOverride.CHAT_CONDITIONS)) { activeChar.sendMessage("Player is in jail."); return; diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatTrade.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatTrade.java index 7bffc7c149e174dcebf3a6f9833046ab9a4bd436..0a5f2052e5623f20e1bbe7ec28748389319896fe 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatTrade.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/chathandlers/ChatTrade.java @@ -19,6 +19,7 @@ import com.l2jserver.gameserver.handler.IChatHandler; import com.l2jserver.gameserver.instancemanager.MapRegionManager; import com.l2jserver.gameserver.model.BlockList; import com.l2jserver.gameserver.model.L2World; +import com.l2jserver.gameserver.model.PcCondOverride; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.CreatureSay; @@ -51,7 +52,7 @@ public class ChatTrade implements IChatHandler L2PcInstance[] pls = L2World.getInstance().getAllPlayersArray(); - if (Config.DEFAULT_TRADE_CHAT.equalsIgnoreCase("on") || (Config.DEFAULT_TRADE_CHAT.equalsIgnoreCase("gm") && activeChar.isGM())) + if (Config.DEFAULT_TRADE_CHAT.equalsIgnoreCase("on") || (Config.DEFAULT_TRADE_CHAT.equalsIgnoreCase("gm") && activeChar.canOverrideCond(PcCondOverride.CHAT_CONDITIONS))) { int region = MapRegionManager.getInstance().getMapRegionLocId(activeChar); for (L2PcInstance player : pls) @@ -62,7 +63,7 @@ public class ChatTrade implements IChatHandler } else if (Config.DEFAULT_TRADE_CHAT.equalsIgnoreCase("global")) { - if (!activeChar.isGM() && !activeChar.getFloodProtectors().getGlobalChat().tryPerformAction("global chat")) + if (!activeChar.canOverrideCond(PcCondOverride.CHAT_CONDITIONS) && !activeChar.getFloodProtectors().getGlobalChat().tryPerformAction("global chat")) { activeChar.sendMessage("Do not spam trade channel."); return; diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Fishing.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Fishing.java index 7bb776eb17d538ffcb05273c0743712159227220..c4ab746a467c60eb858336760e3951d31a64ee89 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Fishing.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Fishing.java @@ -19,6 +19,7 @@ import com.l2jserver.gameserver.GeoData; import com.l2jserver.gameserver.handler.ISkillHandler; import com.l2jserver.gameserver.instancemanager.ZoneManager; import com.l2jserver.gameserver.model.L2Object; +import com.l2jserver.gameserver.model.PcCondOverride; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.itemcontainer.Inventory; @@ -54,7 +55,7 @@ public class Fishing implements ISkillHandler * If fishing is disabled, there isn't much point in doing anything * else, unless you are GM. so this got moved up here, before anything else. */ - if (!Config.ALLOWFISHING && !player.isGM()) + if (!Config.ALLOWFISHING && !player.canOverrideCond(PcCondOverride.SKILL_CONDITIONS)) { player.sendMessage("Fishing server is currently offline"); return; diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/usercommandhandlers/Escape.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/usercommandhandlers/Escape.java index c304fe9fd6438477b9fd532f4163ecb9021f1598..4d5e70929d87454f262ada5ab7b27021c1ef2bf5 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/usercommandhandlers/Escape.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/usercommandhandlers/Escape.java @@ -24,6 +24,7 @@ import com.l2jserver.gameserver.datatables.SkillTable; import com.l2jserver.gameserver.handler.IUserCommandHandler; import com.l2jserver.gameserver.instancemanager.GrandBossManager; import com.l2jserver.gameserver.instancemanager.MapRegionManager; +import com.l2jserver.gameserver.model.PcCondOverride; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.entity.TvTEvent; import com.l2jserver.gameserver.model.skills.L2Skill; @@ -69,7 +70,7 @@ public class Escape implements IUserCommandHandler return false; } - if (GrandBossManager.getInstance().getZone(activeChar) != null && !activeChar.isGM()) + if (GrandBossManager.getInstance().getZone(activeChar) != null && !activeChar.canOverrideCond(PcCondOverride.ZONE_CONDITIONS)) { activeChar.sendMessage("You may not use an escape command in a Boss Zone."); return false; diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/instances/FinalEmperialTomb/FinalEmperialTomb.java b/L2J_DataPack_BETA/dist/game/data/scripts/instances/FinalEmperialTomb/FinalEmperialTomb.java index e615899d057e2255989138e89e828339be0de31f..f7ed2e402030f844f08175636531e45e487ed20f 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/instances/FinalEmperialTomb/FinalEmperialTomb.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/instances/FinalEmperialTomb/FinalEmperialTomb.java @@ -45,6 +45,7 @@ import com.l2jserver.gameserver.model.L2Object.InstanceType; import com.l2jserver.gameserver.model.L2Party; import com.l2jserver.gameserver.model.L2Territory; import com.l2jserver.gameserver.model.L2World; +import com.l2jserver.gameserver.model.PcCondOverride; import com.l2jserver.gameserver.model.actor.L2Attackable; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.L2Npc; @@ -413,7 +414,7 @@ public class FinalEmperialTomb extends Quest private boolean checkConditions(L2PcInstance player) { - if (debug || player.isGM()) + if (debug || player.canOverrideCond(PcCondOverride.INSTANCE_CONDITIONS)) return true; L2Party party = player.getParty(); if (party == null) @@ -498,7 +499,7 @@ public class FinalEmperialTomb extends Quest //New instance if (!checkConditions(player)) return 0; - if (!player.isGM() && !player.destroyItemByItemId("QUEST", 8073, 1, player, true)) + if (!player.canOverrideCond(PcCondOverride.INSTANCE_CONDITIONS) && !player.destroyItemByItemId("QUEST", 8073, 1, player, true)) return 0; instanceId = InstanceManager.getInstance().createDynamicInstance(template); //Instance ins = InstanceManager.getInstance().getInstance(instanceId);