public bool Prepare(Creature creature, Skill skill, Packet packet)
{
var ingredients = new List<Ingredient>();
var unkByte = packet.GetByte();
var method = packet.GetString();
var propEntityId = packet.GetLong();
var unkInt1 = packet.GetInt();
var count = packet.GetInt();
for (int i = 0; i < count; ++i)
{
var itemEntityId = packet.GetLong();
var amount = packet.GetFloat();
// Check item
var item = creature.Inventory.GetItem(itemEntityId);
if (item == null)
{
Log.Warning("Cooking.Prepare: Creature '{0:X16}' tried to use non-existent item.", creature.EntityId);
return false;
}
ingredients.Add(new Ingredient(item, amount));
}
// Check tools
if (!this.CheckTools(creature, method))
return false;
// Check rank
if (!this.CheckRank(creature, method, skill.Info.Rank))
return false;
// Check prop
if (!this.CheckProp(creature, method, propEntityId))
return false;
// Save information
creature.Temp.CookingIngredients = ingredients;
creature.Temp.CookingMethod = method;
// Update tools
// Item dura
// Item exp
// Item dura
Send.SkillUse(creature, skill.Info.Id, this.GetTime(method));
skill.State = SkillState.Used;
Send.Effect(creature, Effect.Cooking, (byte)1, method);
return true;
}