/// <summary>
/// Finishes preparing, adds stack.
/// </summary>
/// <param name="creature"></param>
/// <param name="skill"></param>
/// <param name="packet"></param>
/// <returns></returns>
public virtual bool Ready(Creature creature, Skill skill, Packet packet)
{
// Note: The client only prevents casting if stacks = max, if you go above the limit
// it lets you keep casting.
var addStacks = skill.RankData.Stack + creature.GetChainCastLevel(skill.Info.Id);
skill.Stacks = Math.Min(skill.RankData.StackMax, skill.Stacks + addStacks);
Send.Effect(creature, Effect.StackUpdate, EffectSkillName, (byte)skill.Stacks, (byte)0);
Send.Effect(creature, Effect.Casting, (short)skill.Info.Id, (byte)0, (byte)2, (short)0);
Send.SkillReady(creature, skill.Info.Id);
return true;
}