/// <summary>
    /// Is called when progress is 1
    /// Describes what happens on the end of this action.
    /// will evaluate the reward on the needs
    /// </summary>
    public virtual void EndAction()
    {
        if (onEnd != null)
        {
            onEnd();
        }

        if (rewards != null)
        {
            foreach (KeyValuePair <NeedType, float> reward in rewards)
            {
                needs.RewardNeed(reward.Key, reward.Value);
            }
        }

        needs = null; // free the player
    }