protected virtual void AfterPlay(Creature creature, Skill skill, int quality)
{
var playingQuality = this.GetQualityRating(quality);
// Success unless total failure, condition 2 for Novice.
if (skill.Info.Rank == SkillRank.Novice && playingQuality != PlayingQuality.VeryBad)
skill.Train(2); // Use the skill successfully.
// All ranks above F have the same 2 first conditions.
if (skill.Info.Rank >= SkillRank.RF && skill.Info.Rank <= SkillRank.R1)
{
if (playingQuality >= PlayingQuality.Bad)
skill.Train(1); // Use the skill successfully.
if (playingQuality == PlayingQuality.VeryGood)
skill.Train(2); // Get a very good result.
}
// Training by failing is possible between F and 6.
if (skill.Info.Rank >= SkillRank.RF && skill.Info.Rank <= SkillRank.R6 && playingQuality == PlayingQuality.Bad)
skill.Train(3); // Fail at using the skill.
// Training by failing badly is possible at F and E.
if (skill.Info.Rank >= SkillRank.RF && skill.Info.Rank <= SkillRank.RE && playingQuality == PlayingQuality.VeryBad)
skill.Train(4); // Get a horrible result.
// Cancel special motion
if (playingQuality == PlayingQuality.VeryGood)
Send.CancelMotion(creature);
// TODO: "Use the skill successfully to grow crops faster."
// TODO: "Use a music buff skill."
}