1 2-- ----------------------------------------------------------------- 3-- Init 4-- ----------------------------------------------------------------- 5local function prog_init() 6 initModels() 7 sound_playMusic("music/rybky01.ogg") 8 local pokus = getRestartCount() 9 local roompole = createArray(1) 10 11 12 -- ------------------------------------------------------------- 13 local function prog_init_room() 14 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 15 16 room.uvod = 0 17 room.lebzna = 0 18 room.lastura = 0 19 room.jizdam = random(15) + 3 20 room.jizdav = random(50) + 10 21 if pokus > 1 then 22 if random(100) < 30 then 23 room.uvod = 1 24 end 25 if random(100) < 50 then 26 room.lastura = 1 27 end 28 if random(100) < 60 then 29 room.lebzna = 1 30 end 31 if random(100) < 20 then 32 room.jizdam = -1 33 end 34 if random(100) < 30 then 35 room.jizdav = -1 36 end 37 end 38 room.huhuh = 0 39 40 return function() 41 if isReady(small) and isReady(big) and no_dialog() then 42 if room.uvod == 0 then 43 addv(random(20) + 50, "zd1-v-civil") 44 switch(roompole[0]){ 45 [0] = function() 46 addm(random(10), "zd1-m-dolu") 47 end, 48 [1] = function() 49 addm(random(10), "zd1-m-tlac") 50 roompole[0] = roompole[0] + 1 51 end, 52 [2] = function() 53 if random(2) == 0 then 54 addm(random(10), "zd1-m-tlac") 55 else 56 addm(random(10), "zd1-m-dolu") 57 end 58 end, 59 } 60 room.uvod = 1 61 end 62 if room.lastura == 0 and look_at(small, shelka) and math.abs(ydist(small, shelka)) < 3 and random(100) < 1 then 63 if random(2) == 0 then 64 addm(0, "zd1-m-last") 65 else 66 addm(0, "zd1-m-poved") 67 end 68 if random(2) == 0 then 69 addv(random(10), "zd1-v-talis") 70 else 71 addv(random(3), "zd1-v-styd") 72 end 73 room.lastura = 1 74 elseif room.lebzna == 0 and look_at(big, llebka) and math.abs(ydist(big, llebka)) < 3 and random(100) < 1 then 75 addv(20, "zd1-v-lebka") 76 addm(random(8), "zd1-m-stejne") 77 room.lebzna = 1 78 elseif small.jede == room.jizdam then 79 addm(0, "zd1-m-cesta") 80 room.jizdam = -1 81 elseif big.jede == room.jizdav then 82 addv(0, "zd1-v-krecek") 83 addm(3, "zd1-m-slap") 84 room.jizdav = -1 85 elseif random(1000) < 8 then 86 pom1 = room.huhuh 87 if room.huhuh == 0 then 88 room.huhuh = random(3) + 1 89 else 90 room.huhuh = random(4) + 1 91 end 92 if pom1 == room.huhuh then 93 room.huhuh = 5 94 end 95 planDialogSet(5, "zd1-x-huhu"..room.huhuh, 101, dedek, "mluvi") 96 end 97 end 98 end 99 end 100 101 -- ------------------------------------------------------------- 102 local function prog_init_vytah() 103 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 104 105 --NOTE: double rope 106 game_addDecor("rope", vytah.index, stroj.index, 43, 0, 58, 27) 107 game_addDecor("rope", vytah.index, stroj.index, 43 + 3, 0, 58 + 3, 27) 108 109 return function() 110 if vytah.dir == dir_up then 111 if roompole[0] == 0 then 112 roompole[0] = 1 113 end 114 end 115 end 116 end 117 118 -- ------------------------------------------------------------- 119 local function prog_init_stroj() 120 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 121 122 return function() 123 if stroj.X == vytah.X - 1 then 124 if stroj.dir == dir_no and vytah.dir == dir_down then 125 pom1 = 2 126 elseif stroj.dir == dir_up and vytah.dir == dir_no then 127 pom1 = 1 128 elseif stroj.dir == dir_no and vytah.dir == dir_up then 129 pom1 = -1 130 elseif stroj.dir == dir_down and vytah.dir == dir_no then 131 pom1 = -2 132 else 133 pom1 = 0 134 end 135 stroj.afaze = stroj.afaze + pom1 136 if stroj.afaze > 5 then 137 stroj.afaze = stroj.afaze - 6 138 elseif stroj.afaze < 0 then 139 stroj.afaze = stroj.afaze + 6 140 end 141 end 142 143 stroj:updateAnim() 144 end 145 end 146 147 -- ------------------------------------------------------------- 148 local function prog_init_hlavicka() 149 return function() 150 if hlavicka.afaze == 0 and random(100) < 2 or hlavicka.afaze ~= 0 and random(100) < 5 then 151 hlavicka.afaze = random(3) 152 end 153 154 hlavicka:updateAnim() 155 end 156 end 157 158 -- ------------------------------------------------------------- 159 local function prog_init_dedek() 160 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 161 162 dedek.mluvi = 0 163 164 return function() 165 if dedek.mluvi ~= 0 then 166 dedek.afaze = random(2) + 1 167 else 168 dedek.afaze = 0 169 end 170 171 dedek:updateAnim() 172 end 173 end 174 175 -- ------------------------------------------------------------- 176 local function prog_init_small() 177 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 178 179 small.jede = 0 180 181 return function() 182 if vytah.dir == dir_up and small.X >= vytah.X and small.X < vytah.X + 4 and small.Y > vytah.Y and small.Y < vytah.Y + 6 then 183 small.jede = small.jede + 1 184 end 185 end 186 end 187 188 -- ------------------------------------------------------------- 189 local function prog_init_big() 190 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 191 192 big.jede = 0 193 194 return function() 195 if vytah.dir == dir_up and big.X >= vytah.X and big.X < vytah.X + 3 and big.Y > vytah.Y and big.Y < vytah.Y + 5 then 196 big.jede = big.jede + 1 197 end 198 end 199 end 200 201 -- -------------------- 202 local update_table = {} 203 local subinit 204 subinit = prog_init_room() 205 if subinit then 206 table.insert(update_table, subinit) 207 end 208 subinit = prog_init_vytah() 209 if subinit then 210 table.insert(update_table, subinit) 211 end 212 subinit = prog_init_stroj() 213 if subinit then 214 table.insert(update_table, subinit) 215 end 216 subinit = prog_init_hlavicka() 217 if subinit then 218 table.insert(update_table, subinit) 219 end 220 subinit = prog_init_dedek() 221 if subinit then 222 table.insert(update_table, subinit) 223 end 224 subinit = prog_init_small() 225 if subinit then 226 table.insert(update_table, subinit) 227 end 228 subinit = prog_init_big() 229 if subinit then 230 table.insert(update_table, subinit) 231 end 232 return update_table 233end 234local update_table = prog_init() 235 236 237-- ----------------------------------------------------------------- 238-- Update 239-- ----------------------------------------------------------------- 240function prog_update() 241 for key, subupdate in pairs(update_table) do 242 subupdate() 243 end 244end 245 246