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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
|
Pos Lua >> Moon
29 1:[ local mod = ... ] >> 3:[ mod = ... ]
39 2:[ local connect = require("connect") ] >> 4:[ connect = require "connect" ]
67 3:[ local lobby = require("lobby") ] >> 5:[ lobby = require "lobby" ]
91 4:[ local joined = require("joined") ] >> 6:[ joined = require "joined" ]
117 5:[ local party = require("party") ] >> 7:[ party = require "party" ]
141 6:[ local char = require("char") ] >> 8:[ char = require "char" ]
184 8:[ Character = char.Character ] >> 9:[ import Character from char ]
207 10:[ Enemy = char.Enemy ] >> 10:[ import Enemy from char ]
230 12:[ Party = party.Party ] >> 11:[ import Party from party ]
237 13:[ local player = require("player") ] >> 12:[ player = require "player" ]
287 15:[ RemotePlayer = player.RemotePlayer ] >> 13:[ import RemotePlayer from player ]
318 17:[ LocalPlayer = player.LocalPlayer ] >> 14:[ import LocalPlayer from player ]
326 18:[ local main = require("main") ] >> 15:[ main = require "main" ]
348 19:[ local room = require("room") ] >> 16:[ room = require "room" ]
386 21:[ Room = room.Room ] >> 17:[ import Room from room ]
413 23:[ LobbyRoom = room.LobbyRoom ] >> 18:[ import LobbyRoom from room ]
419 24:[ local ui = require("ui") ] >> 19:[ ui = require "ui" ]
437 25:[ local ability = require("ability_reg") ] >> 20:[ ability = require "ability_reg" ]
1117 31:[ local peer = msg.peer ] >> 40:[ peer = msg.peer ]
1135 32:[ self.players[peer] = RemotePlayer(peer, nil, char.classes.Tumbler) ] >> 41:[ @players[peer] = RemotePlayer(peer,nil,char.classes.Tumbler) ]
1198 33:[ am.eval_js(string.format("GLOBAL.broadcast(%q)", am.to_json({ ] >> 42:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_player_joined",uname:peer,class:"Tumbler"}))) ]
1262 34:[ msg = "info_player_joined", ] >> 42:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_player_joined",uname:peer,class:"Tumbler"}))) ]
1289 35:[ uname = peer, ] >> 42:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_player_joined",uname:peer,class:"Tumbler"}))) ]
1300 36:[ class = "Tumbler" ] >> 42:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_player_joined",uname:peer,class:"Tumbler"}))) ]
1198 37:[ }))) ] >> 42:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_player_joined",uname:peer,class:"Tumbler"}))) ]
1318 38:[ if self.host == nil then ] >> 43:[ if @host == nil ]
1335 39:[ self.host = peer ] >> 44:[ @host = peer ]
1316 40:[ end ] >> 43:[ if @host == nil ]
1382 43:[ if self.game_state == "lobby" then ] >> 46:[ if @game_state == "lobby" ]
1411 44:[ if self.players[msg.peer] then ] >> 47:[ if @players[msg.peer] ]
1435 45:[ self.players[msg.peer]:set_class(char.classes[msg.class]) ] >> 48:[ @players[msg.peer]\set_class(char.classes[msg.class]) ]
1501 47:[ self.players[msg.peer] = RemotePlayer(msg.peer, nil, char.classes[msg.class]) ] >> 50:[ @players[msg.peer] = RemotePlayer(msg.peer,nil,char.classes[msg.class]) ]
1576 49:[ am.eval_js(string.format("GLOBAL.send_message(%q,%q)", msg.peer, am.to_json({ ] >> 51:[ am.eval_js(string.format("GLOBAL.send_message(%q,%q)",msg.peer,am.to_json({msg: "confirm_class_change", class: msg.class}))) ]
1655 50:[ msg = "confirm_class_change", ] >> 51:[ am.eval_js(string.format("GLOBAL.send_message(%q,%q)",msg.peer,am.to_json({msg: "confirm_class_change", class: msg.class}))) ]
1686 51:[ class = msg.class ] >> 51:[ am.eval_js(string.format("GLOBAL.send_message(%q,%q)",msg.peer,am.to_json({msg: "confirm_class_change", class: msg.class}))) ]
1576 52:[ }))) ] >> 51:[ am.eval_js(string.format("GLOBAL.send_message(%q,%q)",msg.peer,am.to_json({msg: "confirm_class_change", class: msg.class}))) ]
1704 53:[ return am.eval_js(string.format("GLOBAL.broadcast(%q)", am.to_json({ ] >> 52:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_class_change",uname:msg.peer,class:msg.class}))) ]
1768 54:[ msg = "info_class_change", ] >> 52:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_class_change",uname:msg.peer,class:msg.class}))) ]
1794 55:[ uname = msg.peer, ] >> 52:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_class_change",uname:msg.peer,class:msg.class}))) ]
1809 56:[ class = msg.class ] >> 52:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_class_change",uname:msg.peer,class:msg.class}))) ]
1704 57:[ }))) ] >> 52:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_class_change",uname:msg.peer,class:msg.class}))) ]
1833 59:[ return am.eval_js(string.format("GLOBAL.send_message(%q,%q)", msg.peer, am.to_json({ ] >> 54:[ am.eval_js(string.format("GLOBAL.send_message(%q,%q)",msg.peer,am.to_json({msg: "deny_class_change", class:@players[msg.peer].class}))) ]
1912 60:[ msg = "deny_class_change", ] >> 54:[ am.eval_js(string.format("GLOBAL.send_message(%q,%q)",msg.peer,am.to_json({msg: "deny_class_change", class:@players[msg.peer].class}))) ]
1940 61:[ class = self.players[msg.peer].class ] >> 54:[ am.eval_js(string.format("GLOBAL.send_message(%q,%q)",msg.peer,am.to_json({msg: "deny_class_change", class:@players[msg.peer].class}))) ]
1833 62:[ }))) ] >> 54:[ am.eval_js(string.format("GLOBAL.send_message(%q,%q)",msg.peer,am.to_json({msg: "deny_class_change", class:@players[msg.peer].class}))) ]
2005 66:[ if msg.peer == self.host and self.game_state == "lobby" then ] >> 56:[ if msg.peer == @host and @game_state == "lobby" ]
2054 67:[ self.player_party = Party() ] >> 57:[ @player_party = Party! ]
2136 68:[ for _, chartbl in pairs(self.players) do ] >> 59:[ for _, chartbl in pairs(@players) ]
2157 69:[ chartbl.position = chartbl.class.default_position ] >> 60:[ chartbl.position = chartbl.class.default_position ]
2211 70:[ chartbl.hp = chartbl.class.default_hp ] >> 61:[ chartbl.hp = chartbl.class.default_hp ]
2253 71:[ self.player_party:add_member(chartbl) ] >> 62:[ @player_party\add_member(chartbl) ]
2119 72:[ end ] >> 59:[ for _, chartbl in pairs(@players) ]
2290 73:[ self:campaign_start() ] >> 63:[ @campaign_start! ]
2310 74:[ return am.eval_js(string.format("GLOBAL.broadcast(%q)", am.to_json({ ] >> 64:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_campaign_start",time_ref:@player_start_time}))) ]
2374 75:[ msg = "info_campaign_start", ] >> 64:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_campaign_start",time_ref:@player_start_time}))) ]
2405 76:[ time_ref = self.player_start_time ] >> 64:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_campaign_start",time_ref:@player_start_time}))) ]
2310 77:[ }))) ] >> 64:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_campaign_start",time_ref:@player_start_time}))) ]
2003 78:[ end ] >> 56:[ if msg.peer == @host and @game_state == "lobby" ]
2451 81:[ self.game_state = "room_entry" ] >> 66:[ @game_state = "room_entry" ]
2481 82:[ self.player_start_time = am.eval_js("new Date().getTime()") ] >> 67:[ @player_start_time = am.eval_js("new Date().getTime()") ]
2540 83:[ room = Room.generate(self.cr) ] >> 68:[ room = Room.generate(@cr) ]
2569 84:[ self.room = room ] >> 69:[ @room = room ]
2585 85:[ self.enemy_party = self:generate_enemies() ] >> 70:[ @enemy_party = @generate_enemies! ]
2622 86:[ self.enemy_party:set_room(room) ] >> 71:[ @enemy_party\set_room(room) ]
2653 87:[ self.player_party:set_room(room) ] >> 72:[ @player_party\set_room(room) ]
2685 88:[ am.eval_js(string.format("GLOBAL.broadcast(%q)", am.to_json({ ] >> 73:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({ ]
2754 89:[ msg = "info_enemy_party", ] >> 74:[ msg: "info_enemy_party", ]
2784 90:[ data = self.enemy_party:serialize() ] >> 75:[ data: @enemy_party\serialize! ]
2685 91:[ }))) ] >> 73:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({ ]
2820 92:[ room:distribute_party(self.player_party, self.enemy_party) ] >> 77:[ room\distribute_party(@player_party,@enemy_party) ]
2873 93:[ am.eval_js(string.format("GLOBAL.broadcast(%q)", am.to_json({ ] >> 78:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_room",data:room\serialize!,time_ref:@player_start_time}))) ]
2937 94:[ msg = "info_room", ] >> 78:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_room",data:room\serialize!,time_ref:@player_start_time}))) ]
2954 95:[ data = room:serialize(), ] >> 78:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_room",data:room\serialize!,time_ref:@player_start_time}))) ]
2979 96:[ time_ref = self.player_start_time ] >> 78:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_room",data:room\serialize!,time_ref:@player_start_time}))) ]
2873 97:[ }))) ] >> 78:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"info_room",data:room\serialize!,time_ref:@player_start_time}))) ]
3005 98:[ self.game_state = "room_players" ] >> 79:[ @game_state = "room_players" ]
3066 101:[ local player_ser = { } ] >> 82:[ player_ser = {} ]
3105 102:[ for peerid, player in pairs(self.players) do ] >> 83:[ for peerid, player in pairs(@players) ]
3125 103:[ player_ser[peerid] = player:serialize() ] >> 84:[ player_ser[peerid] = player\serialize! ]
3084 104:[ end ] >> 83:[ for peerid, player in pairs(@players) ]
3166 105:[ return am.eval_js(string.format("GLOBAL.broadcast(%q)", am.to_json({ ] >> 85:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"respond_player_list", data:player_ser}))) ]
3230 106:[ msg = "respond_player_list", ] >> 85:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"respond_player_list", data:player_ser}))) ]
3258 107:[ data = player_ser ] >> 85:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"respond_player_list", data:player_ser}))) ]
3166 108:[ }))) ] >> 85:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({msg:"respond_player_list", data:player_ser}))) ]
3298 111:[ if self.game_state == "room_players" then ] >> 87:[ if @game_state == "room_players" ]
3334 112:[ if not self.dead_players[msg.peer] then ] >> 88:[ if not @dead_players[msg.peer] ]
3367 113:[ self.set_actions[msg.peer] = ability[msg.action] ] >> 89:[ @set_actions[msg.peer] = ability[msg.action] ]
3332 114:[ end ] >> 88:[ if not @dead_players[msg.peer] ]
3296 115:[ end ] >> 87:[ if @game_state == "room_players" ]
3428 118:[ local msg = am.eval_js("GLOBAL.get_message()") ] >> 91:[ msg = am.eval_js("GLOBAL.get_message()") ]
3473 119:[ if msg ~= nil then ] >> 92:[ if msg != nil ]
3490 120:[ if msg.msg == "data" then ] >> 93:[ if msg.msg == "data" ]
3513 121:[ local info = am.parse_json(msg.data) ] >> 94:[ info = am.parse_json(msg.data) ]
3548 122:[ info.peer = msg.peer ] >> 95:[ info.peer = msg.peer -- server messages have an extra "peer" field that the client didn't add. ]
3649 123:[ if self[info.msg] then ] >> 96:[ if @[info.msg] ]
3667 124:[ self[info.msg](self, info) ] >> 97:[ @[info.msg](@,info) ]
3701 126:[ print("Failed to find server message handler:", msg, "no handler", info.msg) ] >> 99:[ print("Failed to find server message handler:",msg,"no handler",info.msg) ]
3787 129:[ print("Msg was nil") ] >> 101:[ print("Msg was nil") ]
3471 131:[ end ] >> 92:[ if msg != nil ]
3833 132:[ if self.game_state == "room_players" then ] >> 103:[ if @game_state == "room_players" ]
3869 133:[ if am.eval_js("new Date().getTime()") > self.player_start_time + 6000 then ] >> 104:[ if am.eval_js("new Date().getTime()") > @player_start_time + 6000 ]
3982 134:[ local npc_actions = { } ] >> 106:[ npc_actions = {} ]
4003 135:[ local used_actions = { } ] >> 107:[ used_actions = {} ]
4025 136:[ local party_index = { } ] >> 108:[ party_index = {} ]
4046 137:[ local character_index = { } ] >> 109:[ character_index = {} ]
4088 138:[ for uname, npc in pairs(self.enemy_party.members) do ] >> 110:[ for uname, npc in pairs(@enemy_party.members) ]
4122 139:[ npc_actions[uname] = npc:select_action() ] >> 111:[ npc_actions[uname] = npc\select_action! ]
4167 140:[ table.insert(used_actions, npc_actions[uname]) ] >> 112:[ table.insert(used_actions, npc_actions[uname]) ]
4219 141:[ party_index[npc_actions[uname]] = self.enemy_party ] >> 113:[ party_index[npc_actions[uname]] = @enemy_party ]
4271 142:[ character_index[npc_actions[uname]] = npc ] >> 114:[ character_index[npc_actions[uname]] = npc ]
4071 143:[ end ] >> 110:[ for uname, npc in pairs(@enemy_party.members) ]
4317 144:[ local total_actions = { } ] >> 115:[ total_actions = {} ]
4350 145:[ for k, v in pairs(npc_actions) do ] >> 116:[ for k,v in pairs(npc_actions) ]
4375 146:[ total_actions[k] = v.__name ] >> 117:[ total_actions[k] = v.__name ]
4340 147:[ end ] >> 116:[ for k,v in pairs(npc_actions) ]
4417 148:[ for k, v in pairs(self.set_actions) do ] >> 118:[ for k,v in pairs(@set_actions) ]
4443 149:[ total_actions[k] = v.__name ] >> 119:[ total_actions[k] = v.__name ]
4476 150:[ table.insert(used_actions, v) ] >> 120:[ table.insert(used_actions, v) ]
4511 151:[ party_index[v] = self.player_party ] >> 121:[ party_index[v] = @player_party ]
4547 152:[ character_index[v] = self.player_party:member(k) ] >> 122:[ character_index[v] = @player_party\member(k) ]
4407 153:[ end ] >> 118:[ for k,v in pairs(@set_actions) ]
4649 154:[ table.sort(used_actions, function(a, b) ] >> 124:[ table.sort(used_actions, (a,b) -> ]
4688 155:[ return a.speed < b.speed ] >> 125:[ a.speed < b.speed ]
4649 156:[ end) ] >> 124:[ table.sort(used_actions, (a,b) -> ]
4757 157:[ for k, v in ipairs(used_actions) do ] >> 128:[ for k,v in ipairs(used_actions) ]
4784 158:[ local tchar = character_index[v] ] >> 129:[ tchar = character_index[v] ]
4816 159:[ v.__class.use(self, party_index[v], tchar) ] >> 130:[ v.__class.use(@,party_index[v],tchar) ]
4747 160:[ end ] >> 128:[ for k,v in ipairs(used_actions) ]
4858 161:[ am.eval_js(string.format("GLOBAL.broadcast(%q)", am.to_json({ ] >> 131:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({ ]
4928 162:[ msg = "info_actions", ] >> 132:[ msg:"info_actions", ]
4954 163:[ data = total_actions ] >> 133:[ data: total_actions ]
4858 164:[ }))) ] >> 131:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({ ]
5012 165:[ self.game_state = "room_battle_animate" ] >> 136:[ @game_state = "room_battle_animate" ]
5052 166:[ self.set_actions = { } ] >> 137:[ @set_actions = {} ]
3867 167:[ end ] >> 104:[ if am.eval_js("new Date().getTime()") > @player_start_time + 6000 ]
3831 168:[ end ] >> 103:[ if @game_state == "room_players" ]
5074 169:[ if self.game_state == "room_battle_animate" then ] >> 138:[ if @game_state == "room_battle_animate" --only exists for 1 tick, calc dammge, check if room is done, check if we're defeated, ect. ]
5207 170:[ local _ = self.calculate_damage ] >> 139:[ @calculate_damage ]
5228 171:[ self.player_start_time = am.eval_js("new Date().getTime()") + 500 ] >> 140:[ @player_start_time = am.eval_js("new Date().getTime()")+500 --500 ms for animations ]
5315 172:[ self.game_state = "room_players" ] >> 141:[ @game_state = "room_players" ]
5347 173:[ am.eval_js(string.format("GLOBAL.broadcast(%q)", am.to_json({ ] >> 142:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({ ]
5416 174:[ msg = "info_timeref", ] >> 143:[ msg:"info_timeref", ]
5445 175:[ time_ref = self.player_start_time ] >> 144:[ time_ref:@player_start_time ]
5347 176:[ }))) ] >> 142:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({ ]
5475 177:[ local dead_characters = { } ] >> 146:[ dead_characters = {} ]
5517 178:[ for uname, char in pairs(self.player_party.members) do ] >> 147:[ for uname, char in pairs(@player_party.members) ]
5553 179:[ if char.data.hp <= 0 then ] >> 148:[ if char.data.hp <= 0 ]
5577 180:[ table.insert(dead_characters, uname) ] >> 149:[ table.insert(dead_characters,uname) ]
5618 181:[ char:die() ] >> 150:[ char\die! ]
5633 182:[ self.player_party:remove_member(char) ] >> 151:[ @player_party\remove_member(char) ]
5672 183:[ self.dead_players[uname] = true ] >> 152:[ @dead_players[uname] = true ]
5551 184:[ end ] >> 148:[ if char.data.hp <= 0 ]
5499 185:[ end ] >> 147:[ for uname, char in pairs(@player_party.members) ]
5721 186:[ for uname, char in pairs(self.enemy_party.members) do ] >> 153:[ for uname, char in pairs(@enemy_party.members) ]
5756 187:[ if char.data.hp <= 0 then ] >> 154:[ if char.data.hp <= 0 ]
5780 188:[ table.insert(dead_characters, uname) ] >> 155:[ table.insert(dead_characters,uname) ]
5821 189:[ char:die() ] >> 156:[ char\die! ]
5836 190:[ self.enemy_party:remove_member(char) ] >> 157:[ @enemy_party\remove_member(char) ]
5754 191:[ end ] >> 154:[ if char.data.hp <= 0 ]
5703 192:[ end ] >> 153:[ for uname, char in pairs(@enemy_party.members) ]
5872 193:[ am.eval_js(string.format("GLOBAL.broadcast(%q)", am.to_json({ ] >> 158:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({ ]
5941 194:[ msg = "info_deaths", ] >> 159:[ msg:"info_deaths", ]
5965 195:[ data = dead_characters ] >> 160:[ data:dead_characters ]
5872 196:[ }))) ] >> 158:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({ ]
5994 197:[ if self.player_party:nmembers() == 0 then ] >> 162:[ if @player_party\nmembers! == 0 ]
6028 198:[ self.game_state = "defeat" ] >> 163:[ @game_state = "defeat" ]
6060 199:[ elseif self.enemy_party:nmembers() == 0 then ] >> 164:[ elseif @enemy_party\nmembers! == 0 ]
6093 200:[ am.eval_js(string.format("GLOBAL.broadcast(%q)", am.to_json({ ] >> 165:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({ ]
6163 201:[ msg = "info_loot", ] >> 166:[ msg:"info_loot" ]
6189 202:[ time_ref = self.player_start_time ] >> 167:[ time_ref:@player_start_time ]
6093 203:[ }))) ] >> 165:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({ ]
6277 204:[ self.player_start_time = am.eval_js("new Date().getTime()") ] >> 170:[ @player_start_time = am.eval_js("new Date().getTime()") ]
6337 205:[ self.game_state = "victory" ] >> 171:[ @game_state = "victory" ]
5072 207:[ end ] >> 138:[ if @game_state == "room_battle_animate" --only exists for 1 tick, calc dammge, check if room is done, check if we're defeated, ect. ]
6365 208:[ if self.game_state == "defeat" then ] >> 172:[ if @game_state == "defeat" ]
6393 209:[ am.eval_js(string.format("GLOBAL.broadcast(%q)", am.to_json({ ] >> 173:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({ ]
6462 210:[ msg = "info_defeat" ] >> 174:[ msg:"info_defeat" ]
6393 211:[ }))) ] >> 173:[ am.eval_js(string.format("GLOBAL.broadcast(%q)",am.to_json({ ]
6487 212:[ self.game_state = "done" ] >> 176:[ @game_state = "done" ]
6363 213:[ end ] >> 172:[ if @game_state == "defeat" ]
6512 214:[ if self.game_state == "victory" then ] >> 177:[ if @game_state == "victory" ]
6543 215:[ if am.eval_js("new Date().getTime()") > self.player_start_time + 6000 then ] >> 178:[ if am.eval_js("new Date().getTime()") > @player_start_time + 6000 -- a few seconds for victory! (and animations) ]
6658 216:[ self.cr = self.cr + 1 ] >> 179:[ @cr += 1 ]
6671 217:[ return self:campaign_start() ] >> 180:[ @campaign_start! ]
6541 218:[ end ] >> 178:[ if am.eval_js("new Date().getTime()") > @player_start_time + 6000 -- a few seconds for victory! (and animations) ]
6510 219:[ end ] >> 177:[ if @game_state == "victory" ]
6717 222:[ return print("calculating dammage...") ] >> 183:[ print("calculating dammage...") ]
6776 225:[ local enemies = { } ] >> 186:[ enemies = {} ]
6791 226:[ local tcr = self.cr ] >> 187:[ tcr = @cr ]
6803 227:[ local possible_enemies = { } ] >> 188:[ possible_enemies = {} ]
6837 228:[ for k, v in pairs(char.enemies) do ] >> 189:[ for k,v in pairs(char.enemies) ]
6861 229:[ table.insert(possible_enemies, v) ] >> 190:[ table.insert(possible_enemies,v) ]
6827 230:[ end ] >> 189:[ for k,v in pairs(char.enemies) ]
6896 231:[ local enemy_party = Party() ] >> 191:[ enemy_party = Party! ]
6924 232:[ while tcr > 0 and #possible_enemies > 0 do ] >> 192:[ while tcr > 0 and #possible_enemies > 0 ]
6962 233:[ local filtered_enemies = { } ] >> 193:[ filtered_enemies = {} ]
7002 234:[ for _, enemy in pairs(possible_enemies) do ] >> 194:[ for _, enemy in pairs(possible_enemies) ]
7033 235:[ if enemy.cr <= tcr then ] >> 195:[ if enemy.cr <= tcr ]
7055 236:[ table.insert(filtered_enemies, enemy) ] >> 196:[ table.insert(filtered_enemies,enemy) ]
7031 237:[ end ] >> 195:[ if enemy.cr <= tcr ]
6987 238:[ end ] >> 194:[ for _, enemy in pairs(possible_enemies) ]
7095 239:[ table.shuffle(filtered_enemies) ] >> 197:[ table.shuffle(filtered_enemies) ]
7130 240:[ local rng_enemy = table.remove(filtered_enemies) ] >> 198:[ rng_enemy = table.remove(filtered_enemies) ]
7176 241:[ tcr = tcr - rng_enemy.cr ] >> 199:[ tcr = tcr - rng_enemy.cr ]
7204 242:[ enemy_party:add_member(Enemy(nil, rng_enemy)) ] >> 200:[ enemy_party\add_member(Enemy(nil,rng_enemy)) ]
6919 243:[ end ] >> 192:[ while tcr > 0 and #possible_enemies > 0 ]
7251 244:[ return enemy_party ] >> 201:[ enemy_party ]
496 250:[ self.server = true ] >> 24:[ @server = true ]
513 251:[ self.client = false ] >> 25:[ @client = false ]
531 252:[ am.eval_js(connect) ] >> 26:[ am.eval_js(connect) ]
553 253:[ am.eval_js(lobby) ] >> 27:[ am.eval_js(lobby) ]
573 254:[ self.lobby_id = am.eval_js("GLOBAL.lobby_id") ] >> 28:[ @lobby_id = am.eval_js("GLOBAL.lobby_id") ]
617 255:[ self.game_state = "lobby" ] >> 29:[ @game_state = "lobby" --lobby, room_entry, room_players, room_battle_animate, victory, camp_entry, camp_players_animate, defeat, done ]
753 256:[ self.game_state_extra = 0 ] >> 30:[ @game_state_extra = 0 ]
777 257:[ self.players = { } ] >> 31:[ @players = {} --[peer_id] = tbl ]
811 258:[ self.set_actions = { } ] >> 32:[ @set_actions = {} --[peer_id] = "name" ]
852 259:[ self.player_party = nil ] >> 33:[ @player_party = nil -- the party, created at campaign start ]
914 260:[ self.host = nil ] >> 34:[ @host = nil --who is the lobby host, with the power to start the game? ]
987 261:[ self.enemy_party = nil ] >> 35:[ @enemy_party = nil -- The enemy party ]
1027 262:[ self.updates = { } ] >> 36:[ @updates = {} ]
1043 263:[ self.dead_players = { } ] >> 37:[ @dead_players = {} --[peer_id] = true ]
1083 264:[ self.cr = 1 ] >> 38:[ @cr = 1 ]
7663 284:[ am.eval_js(joined) ] >> 221:[ am.eval_js(joined) ]
7684 285:[ return am.eval_js("CLIENT.join('" .. id .. "');") ] >> 222:[ am.eval_js("CLIENT.join('" .. id .. "');") ]
7748 288:[ return am.eval_js("CLIENT.open") ] >> 224:[ am.eval_js("CLIENT.open") ]
7793 291:[ return am.eval_js("CLIENT.peer") ] >> 226:[ am.eval_js("CLIENT.peer") ]
7853 294:[ return self.localplayer:set_class(char.classes[msg.class]) ] >> 228:[ @localplayer\set_class(char.classes[msg.class]) ]
7932 297:[ return self.localplayer:set_class(char.classes[msg.class]) ] >> 230:[ @localplayer\set_class(char.classes[msg.class]) ]
8036 300:[ for peerid, chardata in pairs(msg.data) do ] >> 232:[ for peerid, chardata in pairs(msg.data) ]
8058 301:[ if not self.player_party:member(peerid) then ] >> 233:[ if not @player_party\member(peerid) ]
8098 302:[ if peerid == am.eval_js("CLIENT.peer._id") then ] >> 234:[ if peerid == am.eval_js("CLIENT.peer._id") ]
8144 303:[ self.localplayer = Character.deserialize(chardata) ] >> 235:[ @localplayer = Character.deserialize(chardata) ]
8196 304:[ self.player_party:add_member(self.localplayer) ] >> 236:[ @player_party\add_member(@localplayer) ]
8240 305:[ self.localplayer:enter_room(self.player_party.room) ] >> 237:[ @localplayer\enter_room(@player_party.room) ]
8298 307:[ local newplayer = Character.deserialize(chardata) ] >> 239:[ newplayer = Character.deserialize(chardata) ]
8347 308:[ self.player_party:add_member(newplayer) ] >> 240:[ @player_party\add_member(newplayer) ]
8388 309:[ newplayer:enter_room(self.player_party.room) ] >> 241:[ newplayer\enter_room(@player_party.room) ]
8441 312:[ print("Do nothing...") ] >> 243:[ print("Do nothing...") ]
8013 314:[ end ] >> 232:[ for peerid, chardata in pairs(msg.data) ]
8497 317:[ if msg.uname == self.localplayer.uname then ] >> 245:[ if msg.uname == @localplayer.uname ]
8533 318:[ return ] >> 246:[ return ]
8495 319:[ end ] >> 245:[ if msg.uname == @localplayer.uname ]
8544 320:[ if not self.player_party:member(msg.uname) then ] >> 247:[ if not @player_party\member(msg.uname) ]
8584 321:[ return self.player_party:add_member(Character.deserialize(msg.class)) ] >> 248:[ @player_party\add_member(Character.deserialize(msg.class)) ]
8653 323:[ return self.player_party:member(msg.uname):set_class(char.classes[msg.class]) ] >> 250:[ @player_party\member(msg.uname)\set_class(char.classes[msg.class]) ]
8754 327:[ if msg.uname == am.eval_js("CLIENT.peer._id") then ] >> 252:[ if msg.uname == am.eval_js("CLIENT.peer._id") ]
8803 328:[ if self.localplayer ~= nil then ] >> 253:[ if @localplayer != nil ]
8828 329:[ return ] >> 254:[ return ]
8801 330:[ end ] >> 253:[ if @localplayer != nil ]
8838 331:[ self.localplayer = LocalPlayer(msg.uname, { }, char.classes[msg.class]) ] >> 255:[ @localplayer = LocalPlayer(msg.uname, {}, char.classes[msg.class]) ]
8908 332:[ self.player_party:add_member(self.localplayer) ] >> 256:[ @player_party\add_member(@localplayer) ]
8950 333:[ return self.localplayer:enter_room(self.player_party.room) ] >> 257:[ @localplayer\enter_room(@player_party.room) ]
9002 334:[ elseif not self.player_party:member(msg.uname) then ] >> 258:[ elseif not @player_party\member(msg.uname) ]
9042 335:[ local newplayer = RemotePlayer(msg.uname, nil, char.classes[msg.class]) ] >> 259:[ newplayer = RemotePlayer(msg.uname, nil, char.classes[msg.class]) ]
9111 336:[ self.player_party:add_member(newplayer) ] >> 260:[ @player_party\add_member(newplayer) ]
9150 337:[ return newplayer:enter_room(self.player_party.room) ] >> 261:[ newplayer\enter_room(@player_party.room) ]
9201 339:[ return print("Do nothing") ] >> 263:[ print("Do nothing") ]
9254 343:[ local lobby_menu = require("lobby_menu") ] >> 265:[ lobby_menu = require "lobby_menu" ]
9290 344:[ local create_party_menu = require("create_party_menu") ] >> 266:[ create_party_menu = require "create_party_menu" ]
9342 345:[ if create_party_menu.loaded then ] >> 267:[ if create_party_menu.loaded ]
9371 346:[ create_party_menu.unload() ] >> 268:[ create_party_menu.unload! ]
9340 347:[ end ] >> 267:[ if create_party_menu.loaded ]
9401 348:[ if lobby_menu.loaded then ] >> 269:[ if lobby_menu.loaded ]
9423 349:[ lobby_menu.unload() ] >> 270:[ lobby_menu.unload! ]
9399 350:[ end ] >> 269:[ if lobby_menu.loaded ]
9444 351:[ local battle_menu = require("battle_menu") ] >> 271:[ battle_menu = require "battle_menu" ]
9482 352:[ battle_menu.load() ] >> 272:[ battle_menu.load! ]
9502 353:[ ui.fadeout() ] >> 273:[ ui.fadeout! ]
9516 354:[ self.time_ref = msg.time_ref ] >> 274:[ @time_ref = msg.time_ref ]
9564 357:[ self.room = Room.deserialize(msg.data) ] >> 276:[ @room = Room.deserialize(msg.data) ]
9601 358:[ self.time_ref = msg.time_ref ] >> 277:[ @time_ref = msg.time_ref ]
9628 359:[ self:set_room(self.room) ] >> 278:[ @set_room(@room) ]
9647 360:[ local battle_menu = require("battle_menu") ] >> 279:[ battle_menu = require "battle_menu" ]
9685 361:[ battle_menu.victory = false ] >> 280:[ battle_menu.victory = false ]
9715 362:[ return main.root:remove("infocard") ] >> 281:[ main.root\remove("infocard") ]
9770 365:[ main.root:remove("infocard") ] >> 283:[ main.root\remove("infocard") ]
9801 366:[ self.time_ref = msg.time_ref ] >> 284:[ @time_ref = msg.time_ref ]
9858 369:[ if self.enemy_party then ] >> 286:[ if @enemy_party ]
9875 370:[ self.node:remove(self.enemy_party.rnode) ] >> 287:[ @node\remove(@enemy_party.rnode) ]
9856 371:[ end ] >> 286:[ if @enemy_party ]
9910 372:[ self.enemy_party = Party.deserialize(msg.data) ] >> 288:[ @enemy_party = Party.deserialize(msg.data) ]
9955 373:[ self.enemy_party:set_room(self.room) ] >> 289:[ @enemy_party\set_room(@room) ]
9988 374:[ if self.room.__class ~= LobbyRoom then ] >> 290:[ if @room.__class != LobbyRoom ]
10019 375:[ self.enemy_party:set_room(self.room) ] >> 291:[ @enemy_party\set_room(@room) ]
9986 376:[ end ] >> 290:[ if @room.__class != LobbyRoom ]
10050 377:[ local battle_menu = require("battle_menu") ] >> 292:[ battle_menu = require "battle_menu" ]
10088 378:[ battle_menu.victory = false ] >> 293:[ battle_menu.victory = false ]
10118 379:[ return main.root:remove("infocard") ] >> 294:[ main.root\remove("infocard") ]
10208 382:[ local battle_menu = require("battle_menu") ] >> 297:[ battle_menu = require("battle_menu") ]
10247 383:[ local defeat_menu = require("defeat_menu") ] >> 298:[ defeat_menu = require("defeat_menu") ]
10286 384:[ table.insert(main.action_queue, { ] >> 299:[ table.insert(main.action_queue,{battle_menu.unload, {}}) ]
10318 385:[ battle_menu.unload, ] >> 299:[ table.insert(main.action_queue,{battle_menu.unload, {}}) ]
10286 387:[ }) ] >> 299:[ table.insert(main.action_queue,{battle_menu.unload, {}}) ]
10345 388:[ return table.insert(main.action_queue, { ] >> 300:[ table.insert(main.action_queue,{defeat_menu.load,{}}) ]
10377 389:[ defeat_menu.load, ] >> 300:[ table.insert(main.action_queue,{defeat_menu.load,{}}) ]
10345 391:[ }) ] >> 300:[ table.insert(main.action_queue,{defeat_menu.load,{}}) ]
10422 394:[ self.time_ref = msg.time_ref ] >> 302:[ @time_ref = msg.time_ref ]
10449 395:[ local battle_menu = require("battle_menu") ] >> 303:[ battle_menu = require "battle_menu" ]
10487 396:[ battle_menu.victory = true ] >> 304:[ battle_menu.victory = true ]
10516 397:[ return main.root:remove("infocard") ] >> 305:[ main.root\remove("infocard") ]
10592 400:[ for uname, updated in pairs(msg.data) do ] >> 307:[ for uname, updated in pairs(msg.data) ]
10612 401:[ local tchar = self.player_party:member(uname) or self.enemy_party:member(uname) ] >> 308:[ tchar = @player_party\member(uname) or @enemy_party\member(uname) ]
10691 402:[ for k, v in pairs(updated) do ] >> 309:[ for k,v in pairs(updated) ]
10711 403:[ tchar.data[k] = v ] >> 310:[ tchar.data[k] = v ]
10681 404:[ end ] >> 309:[ for k,v in pairs(updated) ]
10571 405:[ end ] >> 307:[ for uname, updated in pairs(msg.data) ]
10769 408:[ for _, uname in pairs(msg.data) do ] >> 312:[ for _, uname in pairs(msg.data) ]
10791 409:[ if self.player_party:member(uname) then ] >> 313:[ if @player_party\member(uname) ]
10824 410:[ local tchar = self.player_party:member(uname) ] >> 314:[ tchar = @player_party\member(uname) ]
10864 411:[ tchar:die() ] >> 315:[ tchar\die! ]
10879 412:[ self.player_party:remove_member(tchar) ] >> 316:[ @player_party\remove_member(tchar) ]
10923 413:[ elseif self.enemy_party:member(uname) then ] >> 317:[ elseif @enemy_party\member(uname) ]
10955 414:[ local tchar = self.enemy_party:member(uname) ] >> 318:[ tchar = @enemy_party\member(uname) ]
10994 415:[ tchar:die() ] >> 319:[ tchar\die! ]
11009 416:[ self.enemy_party:remove_member(tchar) ] >> 320:[ @enemy_party\remove_member(tchar) ]
10754 418:[ end ] >> 312:[ for _, uname in pairs(msg.data) ]
11094 421:[ for uname, action_name in pairs(msg.data) do ] >> 322:[ for uname, action_name in pairs(msg.data) ]
11114 422:[ local action = ability[action_name] ] >> 323:[ action = ability[action_name] ]
11149 423:[ if self.player_party:member(uname) then ] >> 324:[ if @player_party\member(uname) ]
11182 424:[ action.use(self, self.player_party, self.player_party:member(uname)) ] >> 325:[ action.use(@,@player_party,@player_party\member(uname)) ]
11242 425:[ ui.battle_log(string.format("%s used %s", self.player_party:member(uname).class.name, action.text)) ] >> 326:[ ui.battle_log(string.format("%s used %s",@player_party\member(uname).class.name,action.text)) ]
11345 426:[ elseif self.enemy_party:member(uname) then ] >> 327:[ elseif @enemy_party\member(uname) ]
11377 427:[ action.use(self, self.enemy_party, self.enemy_party:member(uname)) ] >> 328:[ action.use(@,@enemy_party,@enemy_party\member(uname)) ]
11435 428:[ ui.battle_log(string.format("%s used %s", uname, action.text)) ] >> 329:[ ui.battle_log(string.format("%s used %s",uname,action.text)) ]
11069 430:[ end ] >> 322:[ for uname, action_name in pairs(msg.data) ]
11498 431:[ return main.root:remove("infocard") ] >> 330:[ main.root\remove("infocard") ]
11544 434:[ local msg = am.eval_js("CLIENT.get()") ] >> 332:[ msg = am.eval_js("CLIENT.get()") ]
11581 435:[ if msg ~= nil then ] >> 333:[ if msg != nil ]
11596 436:[ local info = am.parse_json(msg) ] >> 334:[ info = am.parse_json(msg) ]
11627 437:[ if self[info.msg] then ] >> 335:[ if @[info.msg] ]
11644 438:[ return self[info.msg](self, info) ] >> 336:[ @[info.msg](@,info) ]
11676 440:[ return print("Failed to find client message handler", info) ] >> 338:[ print("Failed to find client message handler", info) ]
11579 442:[ end ] >> 333:[ if msg != nil ]
11755 445:[ self.localplayer = player ] >> 340:[ @localplayer = player ]
11779 446:[ self.player_party:add_member(player) ] >> 341:[ @player_party\add_member(player) ]
11814 447:[ return self.localplayer:enter_room(self.player_party.room) ] >> 342:[ @localplayer\enter_room(@player_party.room) ]
11881 450:[ self.room = room ] >> 344:[ @room = room ]
11896 451:[ assert(self.room, "cannot set a nil room") ] >> 345:[ assert(@room, "cannot set a nil room") ]
11937 452:[ assert(self.room.load, "rooms must have a .load") ] >> 346:[ assert(@room.load, "rooms must have a .load") ]
11987 453:[ if self.player_party.room then ] >> 347:[ if @player_party.room ]
12010 454:[ self.player_party.room:unload() ] >> 348:[ @player_party.room\unload! ]
11985 455:[ end ] >> 347:[ if @player_party.room ]
12082 456:[ self.room:load() ] >> 350:[ @room\load! ]
12124 457:[ self.player_party:set_room(room) ] >> 352:[ @player_party\set_room(room) ]
12157 458:[ if self.enemy_party then ] >> 353:[ if @enemy_party ]
12176 459:[ if self.enemy_party.room then ] >> 354:[ if @enemy_party.room ]
12199 460:[ self.enemy_party.room:unload() ] >> 355:[ @enemy_party.room\unload! ]
12174 461:[ end ] >> 354:[ if @enemy_party.room ]
12228 462:[ self.enemy_party:set_room(self.room) ] >> 356:[ @enemy_party\set_room(@room) ]
12155 463:[ end ] >> 353:[ if @enemy_party ]
12303 464:[ if self.enemy_party then ] >> 358:[ if @enemy_party ]
12391 465:[ return self.node:append(self.enemy_party.rnode) ] >> 361:[ @node\append(@enemy_party.rnode) ]
12301 466:[ end ] >> 358:[ if @enemy_party ]
12439 469:[ return main.root("world_characters"):append(self.node) ] >> 363:[ main.root("world_characters")\append(@node) ]
7289 475:[ self.client = true ] >> 205:[ @client = true ]
7306 476:[ self.server = false ] >> 206:[ @server = false ]
7324 477:[ am.eval_js(connect) ] >> 207:[ am.eval_js(connect) ]
7346 478:[ self.players = { } ] >> 208:[ @players = {} ]
7362 479:[ self.player_party = Party() ] >> 209:[ @player_party = Party! ]
7387 480:[ self.enemy_party = nil ] >> 210:[ @enemy_party = nil ]
7408 481:[ main.root("world_characters"):append(self.player_party.node) ] >> 211:[ main.root("world_characters")\append(@player_party.node) ]
7467 482:[ self.parties = { ] >> 212:[ @parties = {@player_party} ]
7479 483:[ self.player_party ] >> 212:[ @parties = {@player_party} ]
7467 484:[ } ] >> 212:[ @parties = {@player_party} ]
7496 485:[ self.node = am.group() ] >> 213:[ @node = am.group! ]
7516 486:[ self.node:append(self.player_party.node) ] >> 214:[ @node\append(@player_party.node) ]
7551 487:[ self.node:action(coroutine.create(function() ] >> 215:[ @node\action(coroutine.create(()-> ]
7594 488:[ while true do ] >> 216:[ while true ]
7604 489:[ coroutine.yield() ] >> 217:[ coroutine.yield! ]
7589 490:[ end ] >> 216:[ while true ]
7551 491:[ end)) ] >> 215:[ @node\action(coroutine.create(()-> ]
7628 492:[ self.localplayer = nil ] >> 219:[ @localplayer = nil ]
12485 507:[ mod["World"] = World ] >> 366:[ mod["World"] = World ]
12506 508:[ mod["Server"] = Server ] >> 367:[ mod["Server"] = Server ]
12529 509:[ return mod ] >> 368:[ mod ]
|