1
2-- -----------------------------------------------------------------
3-- Init
4-- -----------------------------------------------------------------
5local function prog_init()
6    initModels()
7    sound_playMusic("music/rybky01.ogg")
8    local pokus = getRestartCount()
9
10
11    -- -------------------------------------------------------------
12    local function prog_init_room()
13        local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
14
15        room.uvod = 0
16        room.zatrpocitadlo = 1000 + random(4000)
17        room.zavazi = 0
18        room.klauspocitadlo = 500 + random(1500)
19        room.stolecky = 0
20        room.prycpocitadlo = 500 + random(1500)
21        room.hrncisko = 0
22        room.kresilko = 0
23        room.ss = 0
24        room.osam = 0
25        local roompole = createArray(4)
26        if roompole[3] == 2 then
27            roompole[3] = 1
28        end
29        room.stoji = 0
30        room.uprava = 0
31
32        return function()
33            if no_dialog() and isReady(small) and isReady(big) then
34                if room.zatrpocitadlo > 0 then
35                    room.zatrpocitadlo = room.zatrpocitadlo - 1
36                end
37                if room.klauspocitadlo > 0 then
38                    room.klauspocitadlo = room.klauspocitadlo - 1
39                end
40                if room.prycpocitadlo > 0 then
41                    room.prycpocitadlo = room.prycpocitadlo - 1
42                end
43                if room.uvod == 0 then
44                    room.uvod = 1
45                    pom1 = random(20)
46                    if pokus == 1 then
47                        pom1 = 3
48                    end
49                    if 0 <= pom1 and pom1 <= 5 then
50                        addm(9 + random(35), "kuch-m-objev0")
51                    elseif 6 <= pom1 and pom1 <= 9 then
52                        addm(9 + random(35), "kuch-m-objev1")
53                    elseif 10 <= pom1 and pom1 <= 17 then
54                        addm(9 + random(42), "kuch-m-objev3")
55                        if random(100) > pokus * 8 or random(100) < 30 then
56                            addv(12, "kuch-v-varil")
57                            addv(7, "kuch-v-problem")
58                            addm(14, "kuch-m-noproblem")
59                            addv(5, "kuch-v-podivej")
60                        end
61                    elseif pom1 == 18 then
62                        addm(9 + random(35), "kuch-m-objev2")
63                        room.zatrpocitadlo = -1
64                    end
65                elseif room.uvod == 1 and room.stolecky == 0 and big.pryc == 0 and random(70) == 1 then
66                    room.stolecky = 1
67                    if random(40 * pokus) < 50 then
68                        addv(9 + random(100), "kuch-v-stolky0")
69                    end
70                elseif room.zatrpocitadlo == 0 then
71                    room.zatrpocitadlo = -1
72                    addm(9, "kuch-m-objev2")
73                elseif room.zavazi == 0 and zavazedlo2.X == 39 and zavazedlo2.Y == 9 and random(10 * pokus) == 1 then
74                    room.zavazi = 1
75                    if pokus < 5 or random(100) < 40 then
76                        addv(9, "kuch-v-stolky1")
77                        if random(100) < 40 and room.zatrpocitadlo > -1 then
78                            room.zatrpocitadlo = -1
79                            addm(9, "kuch-m-objev2")
80                        end
81                    end
82                elseif room.klauspocitadlo == 0 and big.pryc == 0 then
83                    room.klauspocitadlo = 2000 + random(10000)
84                    if pokus < 6 or random(100) < 50 then
85                        addv(9, "kuch-v-stolky2")
86                    end
87                elseif room.prycpocitadlo == 0 and big.pryc == 0 then
88                    room.prycpocitadlo = -1
89                    if pokus < 10 or random(100) < 50 then
90                        if random(100) < 70 then
91                            addv(9, "kuch-v-odsud0")
92                            if random(100) < 30 then
93                                addv(9, "kuch-v-odsud1")
94                            end
95                            if random(100) < 25 then
96                                addm(9, "kuch-m-premyslim0")
97                            end
98                        else
99                            addv(9, "kuch-v-odsud1")
100                        end
101                        if random(100) < 90 or pokus == 1 then
102                            if small.dir ~= dir_no and random(100) < 50 then
103                                addm(6, "kuch-m-premyslim2")
104                            elseif random(100) < 45 then
105                                addm(9, "kuch-m-premyslim0")
106                            else
107                                addm(16, "kuch-m-premyslim1")
108                            end
109                        end
110                    end
111                elseif room.hrncisko == 0 and dist(spindira, small) < 2 and random(100) < 10 then
112                    room.hrncisko = 1
113                    if pokus < 6 or random(100) < 50 then
114                        switch(random(3)){
115                            [0] = function()
116                                addm(9, "kuch-m-hrnec0")
117                                if random(100) < 35 then
118                                    addm(9, "kuch-m-hrnec2")
119                                end
120                            end,
121                            [1] = function()
122                                addm(9, "kuch-m-hrnec1")
123                            end,
124                            [2] = function()
125                                addm(9, "kuch-m-hrnec2")
126                            end,
127                        }
128                    end
129                elseif room.kresilko == 0 and dist(kreslak, big) < 4 and (random(100) < 50 or roompole[1] == 0) then
130                    room.kresilko = 1
131                    addv(9, "kuch-v-kreslo0")
132                    if random(100) < 70 then
133                        addv(16, "kuch-v-ja")
134                    end
135                    if roompole[1] == 0 or random(100) < 70 then
136                        if random(100) < 50 then
137                            addm(9, "kuch-m-kreslo0")
138                        else
139                            addv(9, "kuch-v-kreslo1")
140                            if random(100) < 65 then
141                                addm(7, "kuch-m-kreslo2")
142                            end
143                        end
144                    end
145                    roompole[1] = 1
146                elseif room.ss == 0 and dist(small, stolek) < 2 and random(100) == 1 then
147                    addm(4, "kuch-m-stolky")
148                    addv(8, "kuch-v-serie")
149                    addm(8, "kuch-m-pekne")
150                    room.ss = 1
151                elseif room.osam == 0 and big.dole ~= 0 and random(100) == 1 then
152                    room.osam = 1
153                    addv(5, "kuch-v-obavam")
154                elseif roompole[3] < 2 and dist(big, mecik) < 3 and random(50) == 1 then
155                    if roompole[3] == 0 or random(2) == 1 then
156                        roompole[3] = 2
157                        addv(5, "kuch-v-mec")
158                        addm(8, "kuch-m-porcovani")
159                        addv(7, "kuch-v-nedela")
160                    end
161                elseif room.uprava == 0 and papir.dir ~= dir_no and random(14) == 1 then
162                    room.uprava = 1
163                    addv(7, "kuch-v-svitek"..random(2))
164                    if random(2) == 1 then
165                        addm(8, "kuch-m-recept")
166                    else
167                        addm(8, "kuch-m-kuchari")
168                    end
169                elseif room.stoji > 1000 + 2000 * roompole[2] and big.pryc == 1 then
170                    room.stoji = 0
171                    addm(16, "kuch-m-zapeklite")
172                    roompole[2] = roompole[2] + 1
173                end
174            end
175            room.stoji = room.stoji + 1
176        end
177    end
178
179    -- -------------------------------------------------------------
180    local function prog_init_big()
181        local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
182
183        big.pryc = 0
184        big.dole = 0
185
186        return function()
187            if big.X < 32 or big.Y > 13 then
188                big.pryc = 1
189                room.zavazi = 1
190            end
191            if big.X > 15 and big.Y > 20 then
192                big.dole = 1
193            else
194                big.dole = 0
195            end
196            if big.dir ~= dir_no then
197                room.stoji = 0
198            end
199        end
200    end
201
202    -- -------------------------------------------------------------
203    local function prog_init_small()
204        return function()
205            if small.dir ~= dir_no then
206                room.stoji = 0
207            end
208        end
209    end
210
211    -- --------------------
212    local update_table = {}
213    local subinit
214    subinit = prog_init_room()
215    if subinit then
216        table.insert(update_table, subinit)
217    end
218    subinit = prog_init_big()
219    if subinit then
220        table.insert(update_table, subinit)
221    end
222    subinit = prog_init_small()
223    if subinit then
224        table.insert(update_table, subinit)
225    end
226    return update_table
227end
228local update_table = prog_init()
229
230
231-- -----------------------------------------------------------------
232-- Update
233-- -----------------------------------------------------------------
234function prog_update()
235    for key, subupdate in pairs(update_table) do
236        subupdate()
237    end
238end
239
240