public bool Prepare(Creature creature, Skill skill, Packet packet)
{
var dictStr = packet.GetString();
bool warpPartyMembers = false;
if (packet.Peek() == PacketElementType.Byte)
warpPartyMembers = packet.GetBool();
// Get item entity id
var itemEntityId = MabiDictionary.Fetch<long>("ITEMID", dictStr);
if (itemEntityId == 0)
{
Log.Warning("HiddenTownBack: Item entity id missing.");
return false;
}
// Get item
var item = creature.Inventory.GetItem(itemEntityId);
if (item == null)
{
Log.Warning("HiddenTownBack: Creature '{0:X16}' tried to use non-existing item.", creature.EntityId);
return false;
}
// Set callback for Complete
creature.Skills.Callback(skill.Info.Id, () =>
{
// Try to warp and remove item if successful
if (Warp(creature, item, warpPartyMembers))
creature.Inventory.Decrement(item);
});
Send.SkillUse(creature, skill.Info.Id, itemEntityId, warpPartyMembers, "");
skill.State = SkillState.Used;
return true;
}