private void OnPlayerUsesItem(Creature creature, Item item)
{
// Get skill
var skill = creature.Skills.Get(SkillId.Cooking);
if (skill == null)
return;
// Check if item is food
if (!item.HasTag("/food/"))
return;
// Get quality and method
var method = item.MetaData1.GetString("MKACT");
if (method == null)
return;
var quality = item.MetaData1.GetInt("QUAL");
var rating = this.GetRating(quality);
var isDelicious = (rating >= DeliciousRating);
if (skill.Info.Rank == SkillRank.RF)
{
if (method == CookingMethod.Simmering)
skill.Train(3); // Eat a simmered dish without sharing.
else if (method == CookingMethod.Baking)
{
if (isDelicious)
skill.Train(4); // Eat a deliciously baked dish.
}
return;
}
if (skill.Info.Rank == SkillRank.RE)
{
if (method == CookingMethod.Simmering)
{
if (isDelicious)
skill.Train(3); // Eat a deliciously simmered dish.
}
return;
}
if (skill.Info.Rank == SkillRank.RD)
{
if (method == CookingMethod.Boiling)
skill.Train(3); // Eat a boiled dish without sharing.
else if (method == CookingMethod.Simmering)
{
if (isDelicious)
skill.Train(4); // Eat a deliciously simmered dish.
}
return;
}
if (skill.Info.Rank == SkillRank.RC)
{
if (method == CookingMethod.Boiling)
{
if (isDelicious)
skill.Train(3); // Eat a deliciously boiled dish.
}
return;
}
if (skill.Info.Rank == SkillRank.RB)
{
if (method == CookingMethod.DeepFrying)
skill.Train(3); // Eat a deep-fried dish without sharing.
else if (method == CookingMethod.Boiling)
{
if (isDelicious)
skill.Train(4); // Eat a deliciously boiled dish.
}
return;
}
if (skill.Info.Rank == SkillRank.RA)
{
if (method == CookingMethod.StirFrying)
skill.Train(3); // Eat a stir-fried dish without sharing.
else if (method == CookingMethod.DeepFrying)
{
if (isDelicious)
skill.Train(4); // Eat a deliciously deep-fried dish.
}
return;
}
if (skill.Info.Rank >= SkillRank.R9 && skill.Info.Rank <= SkillRank.R7)
{
if (method == CookingMethod.StirFrying)
{
if (isDelicious)
skill.Train(3); // Eat a deliciously stir-fried dish.
}
return;
}
// TODO: Jam and pies don't have jam and pie tags,
// how to identify them for the last two ranks
// without hard-coded ids?
if (skill.Info.Rank == SkillRank.R6)
{
//if (item.HasTag("/jam/"))
// skill.Train(3); // Eat Jam
return;
}
if (skill.Info.Rank == SkillRank.R5)
{
//if (item.HasTag("/pie/"))
// skill.Train(3); // Eat a Pie
return;
}
}