Если у игрока нету древней адены, то Priest телепортирует в катакомбы бесплатно.
Исправляется так:
Файл D:\L2Fortress\L2_Fortress\java\l2f\gameserver\model\instances\L2SignsPriestInstance.java
класс L2SignsPriestInstance
метод onBypassFeedback
Если я правильно понял строка 101
int ancientAdenaAmount = ancientAdena == null ? 0 : ancientAdena.getCount();
в переменной ancientAdenaAmount сохраняется количество древней адены в инвенторе игрока
Далее строка 394 - обработка команды телепорта в катакомбы:
code text
if(ancientAdenaCost > 0)
{
L2ItemInstance temp = player.getInventory().findItemByItemId(SevenSigns.ANCIENT_ADENA_ID);
if(temp != null && ancientAdenaCost > temp.getCount())
{
player.sendPacket(new SystemMessage(SystemMessage.YOU_DO_NOT_HAVE_ENOUGH_ADENA));
break;
}
player.getInventory().destroyItemByItemId(SevenSigns.ANCIENT_ADENA_ID, ancientAdenaCost, true, true);
}
Ошибка кроется во втором условии, temp != null т.е. если древней нету вообще, то ничего и не забирается.
Этот код можно упростить так, одновременно исправляя ошибку бесплатного телепорта:
code text
if(ancientAdenaCost > 0)
{
if(ancientAdenaCost > ancientAdenaAmount)
{
player.sendPacket(new SystemMessage(SystemMessage.YOU_DO_NOT_HAVE_ENOUGH_ADENA));
break;
}
player.getInventory().destroyItemByItemId(SevenSigns.ANCIENT_ADENA_ID, ancientAdenaCost, true, true);
}
Т.к. правильное количество древней, с учетом ее отсутствия вообще, мы получили выше по коду.