/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package net.sf.l2j.gameserver.model.actor.instance;
import javolution.text.TextBuilder;
import net.sf.l2j.gameserver.ai.CtrlIntention;
import net.sf.l2j.gameserver.model.L2CharPosition;
import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.network.serverpackets.ExShowScreenMessage;
import net.sf.l2j.gameserver.network.serverpackets.MyTargetSelected;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.network.serverpackets.SocialAction;
import net.sf.l2j.gameserver.network.serverpackets.ValidateLocation;
import net.sf.l2j.gameserver.templates.chars.L2NpcTemplate;
import net.sf.l2j.util.Rnd;
/**
*
* @author AbsolutePower
*
*/
public final class L2FWyrenInstance extends L2NpcInstance
{
public L2FWyrenInstance(int objectId, L2NpcTemplate template)
{
super(objectId, template);
}
@Override
public void onBypassFeedback(L2PcInstance p, String co)
{
if(co.startsWith("giran"))
{
ridefly(p);
goToLocationDismountAndMessage(p,82698, 148638, -3473);
}
else if(co.startsWith("goddard"))
{
ridefly(p);
goToLocationDismountAndMessage(p,147725, -56517, -2780);
}
else if(co.startsWith("aden"))
{
ridefly(p);
goToLocationDismountAndMessage(p,147456, 26886, -2207);
}
p.sendPacket(ActionFailed.STATIC_PACKET);
}
@Override
public void onAction(L2PcInstance player)
{
if (this != player.getTarget())
{
player.setTarget(this);
player.sendPacket(new MyTargetSelected(getObjectId(), player.getLevel() - getLevel()));
player.sendPacket(new ValidateLocation(this));
}
else if (isInsideRadius(player, INTERACTION_DISTANCE, false, false)) {
SocialAction sa = new SocialAction(this, Rnd.get(8));
broadcastPacket(sa);
player.setCurrentFolkNPC(this);
showMessageWindow(player);
player.sendPacket(ActionFailed.STATIC_PACKET);
}
else
{
player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this);
player.sendPacket(ActionFailed.STATIC_PACKET);
}
}
private void showMessageWindow(L2PcInstance p)
{
NpcHtmlMessage nhm = new NpcHtmlMessage(5);
TextBuilder tb = new TextBuilder("");
if (p.isSitting() || p.isAlikeDead() || p.isInCombat() || p.isInOlympiadMode() || p.isAcademyMember()
|| p.isAfraid() || p.isInCraftMode() || p.isInJail() || p.getPrivateStoreType() != 0)
{
p.sendMessage("You can't use the gk now!");
return;
}
tb.append("<html><head><title>CustomGateKeeper</title></head><body>");
tb.append("<center>");
tb.append("<img src=\"L2Font-e.mini_logo-e\" width=200 height=120 align=center>");
tb.append("</center>");
tb.append("<center>");
tb.append("<td valign=\"top\"><font color=\"FFFFFF\">" + p.getName()+" Choose your destination!</font><br>");
tb.append("<button value=\"Giran\" action=\"bypass -h npc_" + getObjectId() + "_giran\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\"><br>");
tb.append("<button value=\"Goddard\" action=\"bypass -h npc_" + getObjectId() + "_goddard\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\"><br>");
tb.append("<button value=\"Aden\" action=\"bypass -h npc_" + getObjectId() + "_aden\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\"><br>");
tb.append("</center>");
tb.append("<center>");
tb.append("<img src=\"L2Font-e.mini_logo-e\" width=200 height=120 align=center>");
tb.append("<font color=\"FFFFFF\">Coded By AbsolutePower</font>");
tb.append("</center>");
tb.append("</body></html>");
nhm.setHtml(tb.toString());
p.sendPacket(nhm);
p.sendPacket(ActionFailed.STATIC_PACKET);
}
private void goToLocationDismountAndMessage(L2PcInstance p,int x,int y,int z)
{
p.teleToLocation(x, y, z);
wait(1,false);
p.dismount();
p.sendPacket(new ExShowScreenMessage(p.getName() +" you arrived at your destination ", 4000));
p.setXYZ(x, y, z);
}
private void ridefly(L2PcInstance p)
{
int x,y,z;
final int px = p.getX();
final int py = p.getY();
final int pz = p.getZ();
double ph = p.getHeading() / 182.044444444;
ph += 90;
if (ph > 90)
ph -= 90;
ph = (Math.PI * ph) / 90;
x = (int) (px + (1 * Math.cos(ph)));
y = (int) (py + (1 * Math.cos(ph)));
z = (int) (pz + (5000 * Math.cos(ph)));
p.mount(12621, 0, false);
p.abortAttack();
p.abortCast();
p.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
p.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(x, y, z, 0));
p.abortAttack();
p.abortCast();
p.setXYZ(x, y, z);
p.broadcastPacket(new ValidateLocation(p));
wait(1,false);
}
private void wait(int i ,boolean min)
{
if(min)
try
{
Thread.sleep(i * 60000);
}
catch (InterruptedException ie)
{
ie.printStackTrace();
}
else
try
{
Thread.sleep(i * 1000);
}
catch (InterruptedException ie)
{
ie.printStackTrace();
}
}
}