Here is the correct and tested version.
It fixes the issue properly.
Feel free to use it if needed.
/**
* @author Mobius
*/
public class NoblessMaster extends Script
{
// Item
private static final int NOBLESS_TIARA = 7694;
private NoblessMaster()
{
addStartNpc(NoblessMasterConfig.NOBLESS_MASTER_NPCID);
addTalkId(NoblessMasterConfig.NOBLESS_MASTER_NPCID);
addFirstTalkId(NoblessMasterConfig.NOBLESS_MASTER_NPCID);
}
@Override
public String onEvent(String event, Npc npc, Player player)
{
if (!NoblessMasterConfig.NOBLESS_MASTER_ENABLED)
{
return null;
}
switch (event)
{
case "noblesse":
{
if (player.isNoble())
{
return "1003000-3.htm";
}
// Level check FIRST (prevents item loss)
if (player.getLevel() < NoblessMasterConfig.NOBLESS_MASTER_LEVEL_REQUIREMENT)
{
return "1003000-2.htm";
}
// Item check + take items AFTER level check
if (NoblessMasterConfig.NOBLESS_MASTER_ITEM_COUNT > 0)
{
if (getQuestItemsCount(player, NoblessMasterConfig.NOBLESS_MASTER_ITEM_ID) < NoblessMasterConfig.NOBLESS_MASTER_ITEM_COUNT)
{
player.sendMessage(NoblessMasterConfig.NOBLESS_MASTER_ITEM_COUNT + " unit(s) of the item " + ItemData.getInstance().getTemplate(NoblessMasterConfig.NOBLESS_MASTER_ITEM_ID).getName() + " is/are required.");
return "1003000-4.htm";
}
takeItems(player, NoblessMasterConfig.NOBLESS_MASTER_ITEM_ID, NoblessMasterConfig.NOBLESS_MASTER_ITEM_COUNT);
}
if (NoblessMasterConfig.NOBLESS_MASTER_REWARD_TIARA)
{
giveItems(player, NOBLESS_TIARA, 1);
}
player.setNoble(true);
player.sendPacket(QuestSound.ITEMSOUND_QUEST_FINISH.getPacket());
return "1003000-1.htm";
}
}
return null;
}
@Override
public String onFirstTalk(Npc npc, Player player)
{
return "1003000.htm";
}
public static void main(String[] args)
{
new NoblessMaster();
}
}