summaryrefslogtreecommitdiffstats
path: root/nfsw/scenes.py
blob: 2b8edd4ecd1a3e37a615d5e19630127519a3e56f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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'