File: code.lua

package info (click to toggle)
fillets-ng-data 0.6.1-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 73,664 kB
  • ctags: 2,328
  • sloc: makefile: 46
file content (164 lines) | stat: -rw-r--r-- 6,301 bytes parent folder | download | duplicates (8)
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164

-- -----------------------------------------------------------------
-- Init
-- -----------------------------------------------------------------
local function prog_init()
    initModels()
    sound_playMusic("music/rybky02.ogg")
    local pokus = getRestartCount()


    -- -------------------------------------------------------------
    local function prog_init_room()
        local pom1, pom2, pomb1, pomb2 = 0, 0, false, false

        room.oknihach = random(1000) + 500
        if pokus > 1 and random(100) < 20 then
            room.oknihach = -1
        end
        room.rada = random(1000) + 1000
        room.uvod = 0
        room.restrt = 0
        room.oost = 0
        room.zavazim = 0
        room.zavaziv = 0
        room.vlevo = 0

        return function()
            if no_dialog() and isReady(small) and isReady(big) then
                if room.oknihach > 0 then
                    room.oknihach = room.oknihach - 1
                end
                if room.oknihach < -2 then
                    room.oknihach = room.oknihach + 1
                end
                if room.rada > 0 then
                    room.rada = room.rada - 1
                end
                if room.uvod == 0 then
                    room.uvod = 1
                    if pokus == 1 or random(100) < 70 then
                        addv(10, "vrak-v-vraky"..random(3))
                    end
                    if pokus == 1 or random(100) < 70 then
                        addm(10, "vrak-m-vrak"..random(3))
                    end
                elseif room.oknihach == 0 or room.oknihach > 0 and big.X >= 12 then
                    room.oknihach = -100
                    if big.X >= 12 then
                        addv(3, "vrak-v-nevejdu"..random(2))
                    end
                    addm(10, "vrak-m-kupovat"..random(2))
                    addm(10, "vrak-m-naco")
                    room.vyber = {}
                    for pom2 = 1, 3 + random(2) do
                        repeat
                            pom1 = random(7)
                        until not room.vyber[pom1]
                        room.vyber[pom1] = true
                        addm(random(10) + 5, "vrak-m-knihy"..pom1)
                    end
                    addv(20 + random(20), "vrak-v-vyhodit")
                    room.vyber = {}
                    for pom2 = 1, 2 + random(2) do
                        repeat
                            pom1 = random(5)
                        until not room.vyber[pom1]
                        room.vyber[pom1] = true
                        addv(random(10) + 5, "vrak-v-knihy"..pom1)
                    end
                    addm(0, "vrak-m-pohadky")
                elseif room.rada == 0 then
                    room.rada = -1
                    pom1 = random(3) + 1
                    if odd(pom1) then
                        addv(random(20) + 20, "vrak-v-policky")
                    end
                    if pom1 >= 2 then
                        addm(random(20) + 20, "vrak-m-predmety")
                    end
                elseif room.oknihach == -2 and big.X >= 12 then
                    room.oknihach = -500
                    addm(5, "vrak-m-cteni"..random(3))
                elseif oost == 0 and dist(small, sklibak) < 5 and random(100) < 3 then
                    room.oost = 1
                    addm(random(10) + 5, "vrak-m-ostnatec")
                elseif zavazim == 0 and (sklibak.X == 10 and sklibak.Y == 31) and dist(small, sklibak) <= 1 then
                    room.oost = 1
                    room.zavazim = 1
                    addm(3, "vrak-m-zivocich")
                elseif zavaziv == 0 and (sklibak.X == 8 and sklibak.Y == 5 or sklibak.X == 10 and sklibak.Y == 31) and dist(big, sklibak) <= 1 then
                    room.oost = 1
                    room.zavaziv = 1
                    addv(3, "vrak-v-potvurka")
                elseif room.vlevo == 0 and sklibak.X == 10 and sklibak.Y == 31 and random(100) < 2 then
                    room.vlevo = 1
                    addv(5, "vrak-v-snek")
                    if trubka.X == trubka.XStart and trubka.Y == trubka.YStart then
                        addm(3, "vrak-m-ocel")
                        addm(40 + random(40), "vrak-m-restart")
                        room.restrt = 1
                    end
                elseif room.restrt == 0 and sklibak.X < 8 and sklibak.Y == 5 then
                    addm(40 + random(40), "vrak-m-restart")
                    room.restrt = 1
                elseif room.restrt == 0 and sklibak.X > 10 and sklibak.Y == 31 then
                    addm(40 + random(40), "vrak-m-restart")
                    room.restrt = 1
                end
            end
        end
    end

    -- -------------------------------------------------------------
    local function prog_init_sklibak()
        return function()
            if math.mod(game_getCycles(), 2) == 0 then
                local anim_table = {
                    [0] = function() 
                        if random(100) < 5 then
                            sklibak.afaze = 1 - sklibak.afaze
                        end
                        if sklibak.dir ~= dir_no then
                            sklibak.afaze = 2
                        end
                    end,
                    [2] = function()
                        if random(100) < 3 then
                            sklibak.afaze = random(2)
                        end
                    end,
                }
                anim_table[1] = anim_table[0]

                switch(sklibak.afaze)(anim_table)
            end
            sklibak:updateAnim()
        end
    end

    -- --------------------
    local update_table = {}
    local subinit
    subinit = prog_init_room()
    if subinit then
        table.insert(update_table, subinit)
    end
    subinit = prog_init_sklibak()
    if subinit then
        table.insert(update_table, subinit)
    end
    return update_table
end
local update_table = prog_init()


-- -----------------------------------------------------------------
-- Update
-- -----------------------------------------------------------------
function prog_update()
    for key, subupdate in pairs(update_table) do
        subupdate()
    end
end