public void _wm_selectAnswers()
    {
        string key  = character + "SuperAnswer";
        string lKey = character + "SuperAnswerLevel";

        int lastAnswer  = level.retrieveIntValue(key);
        int answerLevel = level.retrieveIntValue(lKey);

        List <bool> answerEnabled = new List <bool> ();

        dialogue.resetAnswers();

        answerEnabled.Add(true);          // we add an extra true so that indexes fall in [1 .. totalAnswers]
        for (int i = 0; i < totalAnswers; ++i)
        {
            answerEnabled.Add(true);
        }
        // disable all previously chosen answers
        disabledAnswers = 0;
        int answerChosen = level.retrieveIntValue(key + disabledAnswers);

        while (answerChosen != 0)
        {
            dialogue.disableAnswer(answerChosen);
            answerEnabled [answerChosen] = false;
            ++disabledAnswers;
            answerChosen = level.retrieveIntValue(key + disabledAnswers);
        }

        // disable the answer we have just chosed
        if (lastAnswer != 0)
        {
            dialogue.disableAnswer(lastAnswer);
            answerEnabled [lastAnswer] = false;
            level.storeIntValue(key + disabledAnswers, lastAnswer);
            ++disabledAnswers;
        }

        if ((totalAnswers - 1) == disabledAnswers)
        {
            level.storeBoolValue(key + "Depleted", true);
        }

        int k = totalAnswers;

        // keep disabling answers until at most two remain
        while ((totalAnswers - disabledAnswers) > 2)
        {
            if (answerEnabled [k])
            {
                dialogue.disableAnswer(k);
                answerEnabled [k] = false;
                ++disabledAnswers;
            }
            --k;
        }
    }