/*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General 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 silentium.scripts.handlers.user;
import silentium.gameserver.handler.IUserCommandHandler;
import silentium.gameserver.instancemanager.GrandBossManager;
import silentium.gameserver.model.actor.instance.L2PcInstance;
import silentium.gameserver.model.entity.TvTEvent;
import silentium.gameserver.network.SystemMessageId;
import silentium.gameserver.network.serverpackets.ActionFailed;
import silentium.gameserver.network.serverpackets.PlaySound;
import silentium.gameserver.tables.SkillTable;
public class Escape implements IUserCommandHandler {
private static final int[] COMMAND_IDS = { 52 };
@Override
public boolean useUserCommand(final int id, final L2PcInstance activeChar) {
// Thanks nbd
if (!TvTEvent.onEscapeUse(activeChar.getObjectId())) {
activeChar.sendPacket(ActionFailed.STATIC_PACKET);
return false;
}
if (activeChar.isCastingNow() || activeChar.isMovementDisabled() || activeChar.isOutOfControl() || activeChar.isInOlympiadMode() || activeChar.inObserverMode() || activeChar.isFestivalParticipant() || activeChar.isInJail() || GrandBossManager.getInstance().getZone(activeChar) != null && !activeChar.isGM()) {
activeChar.sendMessage("Your current state doesn't allow you to use the /unstuck command.");
return false;
}
// Official timer 5 minutes, for GM 1 second
if (activeChar.getAccessLevel().isGm())
activeChar.doCast(SkillTable.getInstance().getInfo(2100, 1));
else {
activeChar.sendPacket(new PlaySound("systemmsg_e.809"));
activeChar.sendPacket(SystemMessageId.STUCK_TRANSPORT_IN_FIVE_MINUTES);
activeChar.doCast(SkillTable.getInstance().getInfo(2099, 1));
}
return true;
}
@Override
public int[] getUserCommandList() {
return COMMAND_IDS;
}
}