Данный фикс позволяет открывать боксы только с использованием ключей Deluxe chest key и скилла Unlock
В классе Chest создаем переменную _isUnlocked:
В конструкторе класса присваеваем ей значение false
Создаем для указанной переменной геттеры и сеттеры.
Далее переходим в класс Unlock, метод public void useSkill, где присваеваем для объекта chest значение переменной true в месте проверки успешности применения способности:
После чего переходим в класс Monster, метод calculateRewards, и в начале дописываем:
В классе Chest создаем переменную _isUnlocked:
Java:
private volatile boolean _isUnlocked;
В конструкторе класса присваеваем ей значение false
Java:
public Chest(int objectId, NpcTemplate template)
{
super(objectId, template);
//...остальной код
_isUnlocked = false;
}
Создаем для указанной переменной геттеры и сеттеры.
Далее переходим в класс Unlock, метод public void useSkill, где присваеваем для объекта chest значение переменной true в месте проверки успешности применения способности:
Java:
if (chestUnlock(skill, chest.getStatus().getLevel()))
{
// Add some hate, so Monster#calculateRewards is evaluated properly.
chest.setUnlocked(true); //наша новая строка
chest.getAggroList().addDamageHate(activeChar, 0, 200);
chest.doDie(activeChar);
}
После чего переходим в класс Monster, метод calculateRewards, и в начале дописываем:
Java:
if(this instanceof Chest) {
Chest c = (Chest)this;
if(!c.getUnlocked() && c.isBox())
return;
}