aboutsummaryrefslogtreecommitdiff
path: root/debug/world.lua.X
blob: 524eaf3176159f5634d9ca220964b1dc13621ce2 (plain)
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 ]