summaryrefslogblamecommitdiffstats
path: root/nfsw/scenes.py
blob: 2b8edd4ecd1a3e37a615d5e19630127519a3e56f (plain) (tree)
1
2
3
4
5
6
7
8
                                           

                               


                    

                           










                                    
               
























                                                       
                







































































                                                                     
 




                      
                        

 

                       
from nfsw.redis import redis as r, key as k
from nfsw.util import read_junk


def get_scene(name):
    scenes = {
        'sexshop': sexshop,
        'garden': garden
    }

    return scenes.get(name, None)


def current_scene():
    return get_scene(
        r().get(k('scene')).decode()
    )


def sexshop(o):
    gobbledygook = [
        'I just got raped in the'
        '\narse by 9238 sentinels.'
        '\nPlease don\'t fuck with me like that'
        '\n\nIt\'s easy.'
        ]


    def rj(name):
        return read_junk('sexshop/{}'.format(name))


    def gg():
        l = len(gobbledygook)

        for i in range(0, l):
            if r().sismember(k('scene:sexshop:gg'), i):
                continue

            r().sadd(k('scene:sexshop:gg'), i)
            return gobbledygook[i]

        return 'I\'m outta words.'


    def intro():
        return rj('intro')


    def p_done(q):
        if r().sismember(k('scenes:done'), 'sexshop'):
            return rj('done')

        # Set player type.
        type = '{}{}'.format(r().get(k('player:type:body')).decode(),
                             r().get(k('player:type:mind')).decode())
        r().set(k('player:type'), type)

        # Mark scene done
        r().sadd(k('scenes:done'), 'sexshop')

        # Move to next scene
        r().set(k('scene'), 'garden')

        return garden({'intro': 1})


    def p_body(q):
        if 'female' in q:
            r().set(k('player:type:body'), 'f')

            return '\n\n'.join([
                rj('body-f-done'),
                rj('mind-q')
            ])

        if 'male' in q:
            r().set(k('player:type:body'), 'm')

            return '\n\n'.join([
                rj('body-m-done'),
                rj('mind-q')
            ])

        return '\n'.join([gg(), rj('body-q')])


    def p_mind(q):
        if 'women' in q:
            r().set(k('player:type:mind'), 'w')

            return '\n\n'.join([
                rj('mind-f-done'),
                p_done(q)
            ])

        if 'men' in q:
            r().set(k('player:type:mind'), 'm')

            return '\n\n'.join([
                rj('mind-m-done'),
                p_done(q)
            ])

        return '\n'.join([gg(), rj('mind-q')])


    def p(q):
        if r().exists(k('player:type')):
            return p_done(q)

        if not r().exists(k('player:type:body')):
            return p_body(q)

        if not r().exists(k('player:type:mind')):
            return p_mind(q)

        return p_done(q)


    if 'intro' in o:
        return intro()

    if 'q' in o:
        return p(o['q'])


def garden(o):
    return 'The Garden'