aboutsummaryrefslogtreecommitdiff
path: root/debug/world.lua.X
diff options
context:
space:
mode:
Diffstat (limited to 'debug/world.lua.X')
-rw-r--r--debug/world.lua.X376
1 files changed, 376 insertions, 0 deletions
diff --git a/debug/world.lua.X b/debug/world.lua.X
new file mode 100644
index 0000000..524eaf3
--- /dev/null
+++ b/debug/world.lua.X
@@ -0,0 +1,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 ]