147 lines
4.2 KiB
Java
147 lines
4.2 KiB
Java
/*
|
|
* 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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
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("<html><body>Pet Manager:<br>" + "You can rent a wyvern or strider for adena.<br>My prices:<br1>" + "<table border=0><tr><td>Ride</td></tr>" + "<tr><td>Wyvern</td><td>Strider</td></tr>" + "<tr><td><a action=\"bypass -h npc_%objectId%_RentPet 1\">30 sec/1800 adena</a></td><td><a action=\"bypass -h npc_%objectId%_RentPet 11\">30 sec/900 adena</a></td></tr>" + "<tr><td><a action=\"bypass -h npc_%objectId%_RentPet 2\">1 min/7200 adena</a></td><td><a action=\"bypass -h npc_%objectId%_RentPet 12\">1 min/3600 adena</a></td></tr>" + "<tr><td><a action=\"bypass -h npc_%objectId%_RentPet 3\">10 min/720000 adena</a></td><td><a action=\"bypass -h npc_%objectId%_RentPet 13\">10 min/360000 adena</a></td></tr>" + "<tr><td><a action=\"bypass -h npc_%objectId%_RentPet 4\">30 min/6480000 adena</a></td><td><a action=\"bypass -h npc_%objectId%_RentPet 14\">30 min/3240000 adena</a></td></tr>" + "</table>" + "</body></html>");
|
|
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;
|
|
}
|
|
}
|