/// <summary>
/// Starts rest skill.
/// </summary>
/// <param name="creature"></param>
/// <param name="skill"></param>
/// <param name="dict"></param>
/// <returns></returns>
public override StartStopResult Start(Creature creature, Skill skill, MabiDictionary dict)
{
creature.StopMove();
creature.IsInBattleStance = false;
creature.AttemptingAttack = false;
var chairItemEntityId = dict.GetLong("ITEMID");
if (chairItemEntityId != 0)
this.SetUpChair(creature, chairItemEntityId);
creature.Activate(CreatureStates.SitDown);
if (skill.Info.Rank >= SkillRank.R9)
creature.Activate(CreatureStatesEx.RestR9);
Send.SitDown(creature);
// Get bonuses if meditation isn't active.
if (!creature.Conditions.Has(ConditionsE.Meditation))
{
ApplyRestBonus(creature, skill, chairItemEntityId);
}
else
{
RestCampfireBonus(creature, skill, chairItemEntityId);
}
// Add bonus from campfire
// TODO: Check for disappearing of campfire? (OnDisappears+Recheck)
var campfires = creature.Region.GetProps(a => a.Info.Id == 203 && a.GetPosition().InRange(creature.GetPosition(), 500));
if (campfires.Count > 0)
{
Send.Notice(creature, Localization.Get("The fire feels very warm."));
}
if (skill.Info.Rank == SkillRank.Novice) skill.Train(1); // Use Rest.
return StartStopResult.Okay;
}