public FollowAction(GameObject actor, GameObject targetCharacter, float maximumDistance, float minimumDistance, Reason reason, bool canStartDialogueWithAgents)
        : base(actor)
    {
        InitInteractionInfo(true, canStartDialogueWithAgents);

        this.targetCharacter = targetCharacter;
        this.targetCharacterState = (CharacterState)targetCharacter.GetComponent("CharacterState");
        this.maximumDistance = maximumDistance;
        this.minimumDistance = minimumDistance;
        this.reason = reason;
        switch(reason) {
            case Reason.SEX:
                targetCharacterState.SetTask(CharacterState.Task.SEX, actor);
                TaskHelp.ShowHelp(TaskHelp.SEX, actor);
                break;
            case Reason.DANCE:
                targetCharacterState.SetTask(CharacterState.Task.DANCE, actor);
                TaskHelp.ShowHelp(TaskHelp.DANCE, null);
                break;
            case Reason.POKER_WITHOUT_MONEY:
                targetCharacterState.SetTask(CharacterState.Task.POKER, actor);
                TaskHelp.ShowHelp(TaskHelp.POKER, null);
                break;
            case Reason.POKER_WITH_MONEY:
                targetCharacterState.SetTask(CharacterState.Task.POKER, actor);
                TaskHelp.ShowHelp(TaskHelp.POKER, null);
                break;
            case Reason.DRINK:
                targetCharacterState.SetTask(CharacterState.Task.DRINK, actor);
                TaskHelp.ShowHelp(TaskHelp.DRINK, actor);
                break;
        }
        ending = false;
    }