void CCouncilMember::performJanitorMode()
{
    std::string elder_text[4];

    elder_text[0] = g_pBehaviorEngine->getString("JANITOR_TEXT1");
    elder_text[1] = g_pBehaviorEngine->getString("JANITOR_TEXT2");
    elder_text[2] = g_pBehaviorEngine->getString("JANITOR_TEXT3");
    elder_text[3] = g_pBehaviorEngine->getString("JANITOR_TEXT4");

    std::vector<CMessageBoxGalaxy*> msgs;

    msgs.push_back( new CMessageBoxBitmapGalaxy(elder_text[0], gGraphics.getBitmapFromId(104), LEFT) );
    msgs.push_back( new CMessageBoxBitmapGalaxy(elder_text[1], gGraphics.getBitmapFromId(104), LEFT) );
    msgs.push_back( new CMessageBoxBitmapGalaxy(elder_text[2], *gGraphics.getBitmapFromStr("KEENTALKING"), RIGHT) );
    msgs.push_back( new CMessageBoxBitmapGalaxy(elder_text[3], gGraphics.getBitmapFromId(104), LEFT) );

    showMsgVec( msgs );

    rescued = true;
}
void CLindsey::getTouchedBy(CSpriteObject &theObject)
{
    if(prepareToVanish)
	return;
    
    // When Keen touches the pincess give that hint
    if( dynamic_cast<CPlayerLevel*>(&theObject) )
    {
        g_pSound->playSound(SOUND_GET_WETSUIT, PLAY_PAUSEALL);

        std::string lindsey_text[3];

        lindsey_text[0] = gpBehaviorEngine->getString(answermap[0]);

        Uint16 cur_level = mp_Map->getLevel();
        if(cur_level > 5)
        {
            lindsey_text[1] = gpBehaviorEngine->getString(answermap[1]);
            lindsey_text[2] = gpBehaviorEngine->getString(answermap[3]);
        }
        else
        {
            lindsey_text[1] = gpBehaviorEngine->getString(answermap[2]);
            lindsey_text[2] = gpBehaviorEngine->getString(answermap[4]);
        }


        std::vector<CMessageBoxGalaxy*> msgs;

        msgs.push_back( new CMessageBoxBitmapGalaxy(lindsey_text[0], gGraphics.getBitmapFromId(108), LEFT) );
        msgs.push_back( new CMessageBoxBitmapGalaxy(lindsey_text[1], gGraphics.getBitmapFromId(108), LEFT) );
        msgs.push_back( new CMessageBoxBitmapGalaxy(lindsey_text[2], *gGraphics.getBitmapFromStr("KEENTHUMBSUP"), RIGHT) );

        showMsgVec( msgs );

        prepareToVanish = true;
    }
}
void CCouncilMember::getTouchedBy(CSpriteObject &theObject)
{
    if(rescued)
        return;

    // When Keen touches the Council Member exit the level and add one to the council list
    if( CPlayerBase *player = dynamic_cast<CPlayerBase*>(&theObject) )
    {
        int &rescuedelders = player->m_Inventory.Item.m_special.ep4.elders;

        // TODO: In this part we have to check which level we are and send the proper messages

        if(mp_Map->isSecret)
        {
            performJanitorMode();
            return;
        }


        g_pSound->playSound(SOUND_RESCUE_COUNCIL_MEMBER, PLAY_PAUSEALL);
        gEventManager.add( new EventPlayTrack(5) );

        std::string elder_text[2];

        if( mp_Map->getLevel() == 17 ) // Under water the text is a bit different
        {
            elder_text[0] = g_pBehaviorEngine->getString("ELDERS_UNDERWATER_TEXT");
            elder_text[1] = "";
        }
        else
        {
            elder_text[0] = g_pBehaviorEngine->getString("ELDERS_TEXT");
            elder_text[1] = g_pBehaviorEngine->getString(answermap[rescuedelders]);
        }


        std::vector<CMessageBoxGalaxy*> msgs;

        msgs.push_back( new CMessageBoxBitmapGalaxy(elder_text[0], gGraphics.getBitmapFromId(104), LEFT) );

        rescuedelders++;

        if(rescuedelders >= NumberToRescue) // In this case the game ends.
        {
            msgs.push_back( new CMessageBoxBitmapGalaxy(elder_text[1],
                            *gGraphics.getBitmapFromStr("KEENTHUMBSUP"),
                            RIGHT) );


            msgs.push_back( new CMessageBoxBitmapGalaxy(g_pBehaviorEngine->getString(answermap[8]),
                            *gGraphics.getBitmapFromStr("KEENTHUMBSUP"), RIGHT) );




            const std::string end_text("End of Episode.\n"
                                       "The game will be restarted.\n"
                                       "You can replay it again or\n"
                                       "try another Episode for more fun!\n"
                                       "The original epilog is under construction.");

            msgs.push_back( new CMessageBoxGalaxy(end_text, new EventEndGamePlay()) );

        }
        else
        {
            msgs.push_back( new CMessageBoxBitmapGalaxy(
                                elder_text[1],
                                *gGraphics.getBitmapFromStr("KEENTHUMBSUP"),
                                RIGHT,
                                new EventExitLevel(mp_Map->getLevel(), true, false, mSprVar)) );
        }

        showMsgVec( msgs );

        player->m_Inventory.Item.m_gem.clear();

        rescued = true;
    }
}