Fix for pomanders on profession cancel.

This commit is contained in:
MobiusDev
2018-04-06 02:36:17 +00:00
parent b224d80373
commit 8fcb49c449
35 changed files with 728 additions and 24 deletions

View File

@@ -24,8 +24,11 @@ import com.l2jmobius.gameserver.model.L2SkillLearn;
import com.l2jmobius.gameserver.model.PcCondOverride;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.actor.transform.Transform;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionCancel;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.util.Util;
@@ -51,10 +54,8 @@ public final class SkillTransfer extends AbstractNpcAI
private SkillTransfer()
{
setPlayerProfessionChangeId(this::onProfessionChange);
if (Config.SKILL_CHECK_ENABLE)
{
setOnEnterWorld(Config.SKILL_CHECK_ENABLE);
}
setPlayerProfessionCancelId(this::onProfessionCancel);
setOnEnterWorld(Config.SKILL_CHECK_ENABLE);
}
public void onProfessionChange(OnPlayerProfessionChange event)
@@ -74,6 +75,29 @@ public final class SkillTransfer extends AbstractNpcAI
}
}
public void onProfessionCancel(OnPlayerProfessionCancel event)
{
final L2PcInstance player = event.getActiveChar();
final int index = getTransferClassIndex(player);
// is a transfer class
if (index < 0)
{
return;
}
int pomanderId = PORMANDERS[index].getId();
// remove unsused HolyPomander
PcInventory inv = player.getInventory();
for (L2ItemInstance itemI : inv.getAllItemsByItemId(pomanderId))
{
inv.destroyItem("[HolyPomander - remove]", itemI, player, null);
}
// remove holy pomander variable
final String name = HOLY_POMANDER + event.getClassId();
player.getVariables().remove(name);
}
@Override
public String onEnterWorld(L2PcInstance player)
{
@@ -110,6 +134,11 @@ public final class SkillTransfer extends AbstractNpcAI
}
}
}
// SkillTransfer or HolyPomander missing
if (count > 0)
{
player.getInventory().addItem("[HolyPomander - missing]", PORMANDERS[index].getId(), count, player, null);
}
}
return super.onEnterWorld(player);
}