* @param player the player
* @param val the val
*/
private void doTeleport(L2PcInstance player, int val)
{
L2TeleportLocation list = TeleportLocationTable.getInstance().getTemplate(val);
if(list != null)
{
//you cannot teleport to village that is in siege
if(!SiegeManager.getInstance().is_teleport_to_siege_allowed() && SiegeManager.getInstance().getSiege(list.getLocX(), list.getLocY(), list.getLocZ()) != null && !player.isNoble())
{
player.sendPacket(new SystemMessage(SystemMessageId.NO_PORT_THAT_IS_IN_SIGE));
return;
}
else if(!SiegeManager.getInstance().is_teleport_to_siege_town_allowed() && TownManager.getInstance().townHasCastleInSiege(list.getLocX(), list.getLocY()) && !player.isNoble())
{
player.sendPacket(new SystemMessage(SystemMessageId.NO_PORT_THAT_IS_IN_SIGE));
return;
}
else if(!player.isGM() && !Config.FLAGED_PLAYER_CAN_USE_GK && player.getPvpFlag() > 0)
{
player.sendMessage("Don't run from PvP! You will be able to use the teleporter only after your flag is gone.");
return;
}
else if (player.isAio() && !Config.ALLOW_AIO_USE_GK)
{
player.sendMessage("Aio Buffers are not allowed to use GateKeepers.");
return;
}
else if(!Config.ALT_GAME_KARMA_PLAYER_CAN_USE_GK && player.getKarma() > 0) //karma
{
SystemMessage sm = new SystemMessage(SystemMessageId.S1_S2);
sm.addString("Go away, you're not welcome here.");
player.sendPacket(sm);
sm = null;
return;
}
else if(list.getIsForNoble() && !player.isNoble())
{
String filename = "data/html/teleporter/nobleteleporter-no.htm";
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile(filename);
html.replace("%objectId%", String.valueOf(getObjectId()));
html.replace("%npcname%", getName());
player.sendPacket(html);
html = null;
filename = null;
return;
}
else if(player.isAlikeDead())
{
player.sendMessage("You can't use teleport when you are dead.");
return;
}
else if(player.isSitting())
{
player.sendMessage("You can't use teleport when you are sitting.");
return;
}
else if(list.getTeleId() == 9982 && list.getTeleId() == 9983 && list.getTeleId() == 9984 && getNpcId() == 30483 && player.getLevel() >= Config.CRUMA_TOWER_LEVEL_RESTRICT)
{
// Chars level XX can't enter in Cruma Tower. Retail: level 56 and above
int maxlvl = Config.CRUMA_TOWER_LEVEL_RESTRICT;
String filename = "data/html/teleporter/30483-biglvl.htm";
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile(filename);
html.replace("%allowedmaxlvl%", "" + maxlvl + "");
player.sendPacket(html);
filename = null;
html = null;
return;
}
//Lilith and Anakim have BossZone, so players must be allowed to enter
else if(list.getTeleId() == 450)
{
if(Config.DEBUG)
{
_log.fine("Teleporting player " + player.getName() + " to new location: " + list.getLocX() + ":" + list.getLocY() + ":" + list.getLocZ());
}
L2BossZone _zone = GrandBossManager.getInstance().getZone(list.getLocX(), list.getLocY(), list.getLocZ());
_zone.allowPlayerEntry(player, 300);
player.teleToLocation(list.getLocX(), list.getLocY(), list.getLocZ(), true);
}
else if(!list.getIsForNoble() && (Config.ALT_GAME_FREE_TELEPORT || player.reduceAdena("Teleport", list.getPrice(), this, true)))
{
if(Config.DEBUG)
{
_log.fine("Teleporting player " + player.getName() + " to new location: " + list.getLocX() + ":" + list.getLocY() + ":" + list.getLocZ());
}
player.teleToLocation(list.getLocX(), list.getLocY(), list.getLocZ(), true);
}
else if(list.getIsForNoble() && (Config.ALT_GAME_FREE_TELEPORT || player.destroyItemByItemId("Noble Teleport", 6651, list.getPrice(), this, true)))
{
if(Config.DEBUG)
{
_log.fine("Teleporting player " + player.getName() + " to new location: " + list.getLocX() + ":" + list.getLocY() + ":" + list.getLocZ());
}
player.teleToLocation(list.getLocX(), list.getLocY(), list.getLocZ(), true);
}
}
else
{
_log.warning("No teleport destination with id:" + val);