1
2-- -----------------------------------------------------------------
3-- Init
4-- -----------------------------------------------------------------
5local function prog_init()
6    initModels()
7    sound_playMusic("music/rybky09.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.zacatek = 0
16        room.vyresime = 0
17        room.pristrojek = 0
18        room.nahoda = 0
19        room.zelezo = 0
20        room.nezvlada = 0
21        room.cas = 500 + random(4000)
22        room.cas1 = 500 + random(7000)
23        room.blesky = 0
24        room.spatne = 0
25        room.husikuze = 0
26        room.bouchacka = 0
27        room.hybe = 0
28        room.malomista = 0
29
30        return function()
31            if no_dialog() and isReady(small) and isReady(big) then
32                if room.cas > 0 then
33                    room.cas = room.cas - 1
34                end
35                if room.cas1 > 0 then
36                    room.cas1 = room.cas1 - 1
37                end
38                if room.hybe == 0 and small.dir ~= dir_no and magnetek.dir ~= dir_no then
39                    room.hybe = 1
40                    addm(random(42) + 9, "pap-m-zvlastni")
41                    addv(9, "pap-v-prekvapeni")
42                    if room.vyresime == 0 and random(100) < 50 then
43                        room.vyresime = 1
44                        addm(5 + random(4), "pap-m-teorie")
45                    end
46                elseif room.zacatek == 0 then
47                    room.zacatek = 1
48                    addv(42 + 9, "pap-v-ha")
49                    addm(5 + random(4), "pap-m-magnet")
50                    if random(100) < 35 then
51                        addv(5 + random(4), "pap-v-potrebovat")
52                    end
53                elseif room.pristrojek == 0 and dist(superpristroj, small) < 2 and random(100) < 30 then
54                    room.pristrojek = 1
55                    addm(9, "pap-m-radio")
56                    room.nahoda = random(3)
57                    if pokus > 5 and random(100) < 40 then
58                        room.nahoda = 4
59                    end
60                    switch(room.nahoda){
61                        [0] = function()
62                            addv(5 + random(4), "pap-v-radio")
63                            if random(100) < 60 then
64                                addm(5 + random(4), "pap-m-nechme")
65                            end
66                            addv(16, "pap-v-divny")
67                        end,
68                        [1] = function()
69                            addv(5 + random(4), "pap-v-divny")
70                            if random(100) < 50 then
71                                addm(5 + random(4), "pap-m-nechme")
72                            end
73                        end,
74                        [2] = function()
75                            addv(5 + random(4), "pap-v-radio")
76                            if room.vyresime == 0 and random(100) < 50 then
77                                room.vyresime = 1
78                                addm(5 + random(4), "pap-m-teorie")
79                            end
80                        end,
81                    }
82                elseif room.zelezo == 0 and (dist(konstrukce1, small) < 1 or dist(konstrukce2, small) < 1) and random(100) < 10 then
83                    room.zelezo = 1
84                    addm(9, "pap-m-ocel")
85                    room.nahoda = random(2)
86                    if pokus > 5 and random(100) < 40 then
87                        room.nahoda = 2
88                    end
89                    switch(room.nahoda){
90                        [0] = function()
91                            addv(5 + random(4), "pap-v-vufu")
92                            if room.nezvlada == 0 and random(100) < 40 then
93                                room.nezvlada = 1
94                                addm(9, "pap-m-naucit")
95                                addm(15 + random(8), "pap-m-nepohnu")
96                            end
97                        end,
98                        [1] = function()
99                            room.nezvlada = 1
100                            addm(9, "pap-m-naucit")
101                            addm(15 + random(8), "pap-m-nepohnu")
102                        end,
103                    }
104                elseif room.nezvlada == 0 and room.cas == 0 then
105                    room.nezvlada = 1
106                    addm(9, "pap-m-naucit")
107                    addm(15 + random(8), "pap-m-nepohnu")
108                elseif room.blesky == 0 and magnetek.kolik ~= 0 and room.cas1 == 0 then
109                    if pokus < 6 or random(100) < 60 then
110                        room.blesky = 1
111                        addv(9, "pap-v-pole")
112                        if random(100) < 70 then
113                            room.spatne = 1
114                            addm(5 + random(4), "pap-m-nedobre")
115                        else
116                            room.husikuze = 1
117                            addm(5 + random(4), "pap-m-mraz")
118                        end
119                    end
120                elseif room.malomista == 0 and big.X == 26 and (14 <= big.Y and big.Y <= 17) and bambitka.X == bambitka.XStart and bambitka.Y == bambitka.YStart and random(100) < 30 then
121                    room.malomista = 1
122                    addv(9, "pap-v-tesno")
123                elseif room.bouchacka == 0 and dist(bambitka, small) < 3 then
124                    room.bouchacka = 1
125                    if pokus < 4 or random(100) < 30 then
126                        addm(9, "pap-m-coje")
127                        room.nahoda = random(5)
128                        switch(room.nahoda){
129                            [0] = function()
130                                addm(16, "pap-m-pistole")
131                                addv(5 + random(4), "pap-v-laserova")
132                                addm(12, "pap-m-jejedno")
133                                addv(5 + random(4), "pap-v-nemir")
134                                addm(5 + random(4), "pap-m-nejde")
135                            end,
136                            [1] = function()
137                                addm(16, "pap-m-pistole")
138                            end,
139                            [2] = function()
140                                addv(5 + random(4), "pap-v-laserova")
141                                if random(100) < 40 then
142                                    addm(12, "pap-m-jejedno")
143                                end
144                            end,
145                        }
146                    end
147                end
148            end
149        end
150    end
151
152    -- -------------------------------------------------------------
153    local function prog_init_magnetek()
154        local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
155
156        magnetek.kolik = 0
157
158        return function()
159            magnetek.kolik = 0
160            if magnetek.anim == "" and isIn(magnetek.X, {12, 11}) and random(100) < 10 then
161                magnetek.kolik = random(11) + 1
162            end
163            kolik_table = {
164                [1] = function()
165                    setanim(magnetek, "a1d?0-2a0S[kolik],0")
166                end,
167                [3] = function()
168                    setanim(magnetek, "a1d?0-2a2a1a0S[kolik],0")
169                end,
170                [5] = function()
171                    --TODO: was typo here? S11 or S1?
172                    setanim(magnetek, "a1d?0-2a2a3a2a1a0S[kolik],0")
173                end,
174                [7] = function()
175                    setanim(magnetek, "a1d?0-2a2a3a4a2a1a0S[kolik],0")
176                end,
177                [9] = function()
178                    setanim(magnetek, "a1d?0-2a?1-4a?1-4a1a0S[kolik],0")
179                end,
180                [10] = function()
181                    setanim(magnetek, "a1d?0-2a?1-4a?1-4a?1-4a1a0S[kolik],0")
182                end,
183                [11] = function()
184                    setanim(magnetek, "a1d?0-2a?1-4a?1-4a?1-4a?1-4a1a0S[kolik],0")
185                end,
186            }
187
188            kolik_table[2] = kolik_table[1]
189            kolik_table[4] = kolik_table[3]
190            kolik_table[6] = kolik_table[5]
191            kolik_table[8] = kolik_table[7]
192            switch(magnetek.kolik)(kolik_table)
193
194            if magnetek.anim ~= "" then
195                goanim(magnetek)
196            end
197            magnetek:updateAnim()
198        end
199    end
200
201    -- -------------------------------------------------------------
202    local function prog_init_superpristroj()
203        local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
204
205        superpristroj.faze = 0
206        superpristroj.smer = 0
207
208        return function()
209            if superpristroj.faze < 6 and random(3) == 0 then
210                superpristroj.smer = 1 - superpristroj.smer
211            end
212            if superpristroj.anim ~= "" then
213                goanim(superpristroj)
214            elseif superpristroj.smer == 0 and superpristroj.faze < 6 then
215                superpristroj.faze = superpristroj.faze + 1
216                superpristroj.afaze = superpristroj.faze
217            elseif superpristroj.smer == 0 and superpristroj.faze == 6 then
218                superpristroj.faze = superpristroj.faze - 1
219                superpristroj.smer = 1 - superpristroj.smer
220                setanim(superpristroj, "a6a7a8a7a6")
221            elseif superpristroj.smer == 1 and superpristroj.faze > 0 then
222                superpristroj.faze = superpristroj.faze - 1
223                superpristroj.afaze = superpristroj.faze
224            else
225                superpristroj.smer = 1 - superpristroj.smer
226                superpristroj.faze = superpristroj.faze + 1
227                superpristroj.afaze = superpristroj.faze
228            end
229            superpristroj:updateAnim()
230        end
231    end
232
233    -- --------------------
234    local update_table = {}
235    local subinit
236    subinit = prog_init_room()
237    if subinit then
238        table.insert(update_table, subinit)
239    end
240    subinit = prog_init_magnetek()
241    if subinit then
242        table.insert(update_table, subinit)
243    end
244    subinit = prog_init_superpristroj()
245    if subinit then
246        table.insert(update_table, subinit)
247    end
248    return update_table
249end
250local update_table = prog_init()
251
252
253-- -----------------------------------------------------------------
254-- Update
255-- -----------------------------------------------------------------
256function prog_update()
257    for key, subupdate in pairs(update_table) do
258        subupdate()
259    end
260end
261
262