/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public 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.StringTokenizer;
import com.l2jserver.Config;
import com.l2jserver.gameserver.handler.IBypassHandler;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2MerchantInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.network.serverpackets.SetupGauge;
public class RentPet implements IBypassHandler
{
private static final String[] COMMANDS =
{
"RentPet"
};
@Override
public boolean useBypass(String command, L2PcInstance activeChar, L2Character target)
{
if (!(target instanceof L2MerchantInstance))
{
return false;
}
if (!Config.ALLOW_RENTPET)
{
return false;
}
if (!Config.LIST_PET_RENT_NPC.contains(target.getId()))
{
return false;
}
try
{
StringTokenizer st = new StringTokenizer(command, " ");
st.nextToken();
if (st.countTokens() < 1)
{
final NpcHtmlMessage msg = new NpcHtmlMessage(((L2Npc) target).getObjectId());
msg.setHtml("
Pet Manager:
" + "You can rent a wyvern or strider for adena.
My prices:" + "" + "");
msg.replace("%objectId%", String.valueOf(((L2Npc) target).getObjectId()));
activeChar.sendPacket(msg);
}
else
{
tryRentPet(activeChar, Integer.parseInt(st.nextToken()));
}
return true;
}
catch (Exception e)
{
_log.info("Exception in " + getClass().getSimpleName());
}
return false;
}
public static final void tryRentPet(L2PcInstance player, int val)
{
if ((player == null) || player.hasSummon() || player.isMounted() || player.isRentedPet() || player.isTransformed() || player.isCursedWeaponEquipped())
{
return;
}
if (!player.disarmWeapons())
{
return;
}
int petId;
double price = 1;
int cost[] =
{
1800,
7200,
720000,
6480000
};
int ridetime[] =
{
30,
60,
600,
1800
};
if (val > 10)
{
petId = 12526;
val -= 10;
price /= 2;
}
else
{
petId = 12621;
}
if ((val < 1) || (val > 4))
{
return;
}
price *= cost[val - 1];
int time = ridetime[val - 1];
if (!player.reduceAdena("Rent", (long) price, player.getLastFolkNPC(), true))
{
return;
}
player.mount(petId, 0, false);
SetupGauge sg = new SetupGauge(3, time * 1000);
player.sendPacket(sg);
player.startRentPet(time);
}
@Override
public String[] getBypassList()
{
return COMMANDS;
}
}