Если у игрока нету древней адены, то Priest телепортирует в катакомбы бесплатно.
Исправляется так:
Файл D:\L2Fortress\L2_Fortress\java\l2f\gameserver\model\instances\L2SignsPriestInstance.java
класс L2SignsPriestInstance
метод onBypassFeedback
Если я правильно понял строка 101
int ancientAdenaAmount = ancientAdena == null ? 0 : ancientAdena.getCount(); в переменной ancientAdenaAmount сохраняется количество древней адены в инвенторе игрока
Далее строка 394 - обработка команды телепорта в катакомбы:
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 т.е. если древней нету вообще, то ничего и не забирается.
Этот код можно упростить так, одновременно исправляя ошибку бесплатного телепорта:
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); }
Т.к. правильное количество древней, с учетом ее отсутствия вообще, мы получили выше по коду.