diff options
Diffstat (limited to 'debug/char.lua.X')
| -rw-r--r-- | debug/char.lua.X | 266 |
1 files changed, 266 insertions, 0 deletions
diff --git a/debug/char.lua.X b/debug/char.lua.X new file mode 100644 index 0000000..bc01108 --- /dev/null +++ b/debug/char.lua.X @@ -0,0 +1,266 @@ +Pos Lua >> Moon +2 1:[ local util = require("util") ] >> 2:[ util = require "util" ] +24 2:[ local broadphase = require("broadphase") ] >> 3:[ broadphase = require "broadphase" ] +58 3:[ local main = require("main") ] >> 4:[ main = require "main" ] +80 4:[ local constrain = require("constrain") ] >> 5:[ constrain = require "constrain" ] +112 5:[ local color = require("color") ] >> 6:[ color = require "color" ] +136 6:[ local room = require("room") ] >> 7:[ room = require "room" ] +179 8:[ LobbyRoom = room.LobbyRoom ] >> 8:[ import LobbyRoom from room ] +185 9:[ local ability_reg = require("ability_reg") ] >> 9:[ ability_reg = require "ability_reg" ] +223 10:[ local mod = ... ] >> 12:[ mod = ... ] +233 11:[ mod.characters = { } ] >> 13:[ mod.characters = {} ] +253 12:[ mod.classes = { } ] >> 14:[ mod.classes = {} ] +270 13:[ require("char_tank") ] >> 15:[ require "char_tank" ] +290 14:[ require("char_mage") ] >> 16:[ require "char_mage" ] +310 15:[ require("char_theif") ] >> 17:[ require "char_theif" ] +331 16:[ require("char_fool") ] >> 18:[ require "char_fool" ] +351 17:[ require("char_jugg") ] >> 19:[ require "char_jugg" ] +371 18:[ mod.class_order = { ] >> 20:[ mod.class_order = { ] +392 19:[ "Tumbler", ] >> 21:[ "Tumbler", ] +404 20:[ "Fire Breather", ] >> 22:[ "Fire Breather", ] +422 21:[ "Juggler", ] >> 23:[ "Juggler", ] +434 22:[ "Troubador", ] >> 24:[ "Troubador", ] +448 23:[ "Juggernaut" ] >> 25:[ "Juggernaut" ] +371 24:[ } ] >> 20:[ mod.class_order = { ] +463 25:[ mod.class_order_rev = { } ] >> 27:[ mod.class_order_rev = {} ] +498 26:[ for k, v in ipairs(mod.class_order) do ] >> 28:[ for k,v in ipairs(mod.class_order) ] +524 27:[ mod.class_order_rev[v] = k ] >> 29:[ mod.class_order_rev[v] = k ] +488 28:[ end ] >> 28:[ for k,v in ipairs(mod.class_order) ] +551 29:[ print("After requireing characters, mod.classes was", mod.classes) ] >> 30:[ print("After requireing characters, mod.classes was",mod.classes) ] +617 30:[ mod.enemies = { } ] >> 31:[ mod.enemies = {} ] +652 31:[ require("e_bethany") ] >> 33:[ require "e_bethany" ] +672 32:[ require("e_ruminating_randy") ] >> 34:[ require "e_ruminating_randy" ] +701 33:[ require("e_mopey_marvin") ] >> 35:[ require "e_mopey_marvin" ] +726 34:[ require("e_sullen_salley") ] >> 36:[ require "e_sullen_salley" ] +752 35:[ require("e_child") ] >> 37:[ require "e_child" ] +770 36:[ print("After requireing rat, mod.enemies was", mod.enemies) ] >> 38:[ print("After requireing rat, mod.enemies was",mod.enemies) ] +928 45:[ key = "<input>" ] >> 42:[ new:(key = "<input>") => ] +945 47:[ self.time = 0 ] >> 43:[ @time = 0 ] +957 48:[ self.key = key ] >> 44:[ @key = key ] +970 49:[ self.value = false ] >> 45:[ @value = false ] +1049 71:[ self.anim = anim ] >> 51:[ @anim = anim ] +1064 72:[ self.interupt = interupt ] >> 52:[ @interupt = interupt ] +1087 73:[ self.mode = mode ] >> 53:[ @mode = mode ] +1133 96:[ action = "<input>" ] >> 56:[ new:(action = "<input>") => ] +1150 98:[ self.time = 0 ] >> 57:[ @time = 0 ] +1162 99:[ self.action = action ] >> 58:[ @action = action ] +1180 114:[ mod.sprite_direction_co = function(self) ] >> 60:[ mod.sprite_direction_co = () => ] +1213 115:[ return function() ] >> 61:[ return () -> ] +1233 116:[ while true do ] >> 62:[ while true ] +1242 117:[ self:stop_anim(self.sprites.right) ] >> 63:[ @stop_anim(@sprites.right) ] +1272 118:[ self:stop_anim(self.sprites.left) ] >> 64:[ @stop_anim(@sprites.left) ] +1301 119:[ self:stop_anim(self.sprites.stop_right) ] >> 65:[ @stop_anim(@sprites.stop_right) ] +1336 120:[ self:stop_anim(self.sprites.stop_left) ] >> 66:[ @stop_anim(@sprites.stop_left) ] +1370 121:[ self:stop_anim(self.sprites.falling_left) ] >> 67:[ @stop_anim(@sprites.falling_left) ] +1407 122:[ self:stop_anim(self.sprites.falling_right) ] >> 68:[ @stop_anim(@sprites.falling_right) ] +1459 123:[ local _list_0 = self.inputs ] >> 69:[ for input in *@inputs ] +1473 126:[ if self.velocity.x > 0.01 then ] >> 70:[ if @velocity.x > 0.01 ] +1498 127:[ self:set_anim(self.sprites.right, 1, "loop") ] >> 71:[ @set_anim(@sprites.right,1,"loop") ] +1554 129:[ elseif self.velocity.x < -0.01 then ] >> 73:[ elseif @velocity.x < -0.01 ] +1580 130:[ self:set_anim(self.sprites.left, 1, "loop") ] >> 74:[ @set_anim(@sprites.left,1,"loop") ] +1628 134:[ coroutine.yield() ] >> 76:[ coroutine.yield! ] +1228 135:[ end ] >> 62:[ while true ] +1213 136:[ end ] >> 61:[ return () -> ] +1180 137:[ end ] >> 60:[ mod.sprite_direction_co = () => ] +1646 138:[ mod.can_die_co = function(self) ] >> 78:[ mod.can_die_co = () => ] +1670 139:[ return function() ] >> 79:[ return () -> ] +1690 140:[ while not self.dead do ] >> 80:[ while not @dead ] +1704 141:[ coroutine.yield() ] >> 81:[ coroutine.yield! ] +1685 142:[ end ] >> 80:[ while not @dead ] +1734 143:[ for k, v in pairs(self.sprites) do ] >> 83:[ for k,v in pairs @sprites ] +1755 144:[ if k ~= "idle" then ] >> 84:[ if k ~= "idle" ] +1772 145:[ self:stop_anim(v) ] >> 85:[ @stop_anim(v) ] +1753 146:[ end ] >> 84:[ if k ~= "idle" ] +1724 147:[ end ] >> 83:[ for k,v in pairs @sprites ] +1790 148:[ if self.sprites.die then ] >> 86:[ if @sprites.die ] +1807 149:[ self:set_anim(self.sprites.die, 5) ] >> 87:[ @set_anim(@sprites.die,5) ] +1788 150:[ end ] >> 86:[ if @sprites.die ] +1835 151:[ return coroutine.yield(true) ] >> 88:[ coroutine.yield(true) ] +1670 152:[ end ] >> 79:[ return () -> ] +1646 153:[ end ] >> 78:[ mod.can_die_co = () => ] +1858 154:[ mod.make_animate = function(c) ] >> 90:[ mod.make_animate = (c) -> ] +1885 155:[ assertf(c.sprites ~= nil, "Tried to animate something that had no .sprites: %q", c.__class.__name) ] >> 91:[ assertf(c.sprites ~= nil, "Tried to animate something that had no .sprites: %q", c.__class.__name) ] +1985 156:[ assertf(c.sprites.idle ~= nil and #c.sprites.idle > 0, "Tried to animate something without a .idle animation: %q", c.__class.__name) ] >> 92:[ assertf(c.sprites.idle ~= nil and #c.sprites.idle > 0, "Tried to animate something without a .idle animation: %q", c.__class.__name) ] +2119 157:[ c.anim_stack = { ] >> 93:[ c.anim_stack = {AnimFrame(c.sprites.idle,0,"loop")} ] +2135 158:[ AnimFrame(c.sprites.idle, 0, "loop") ] >> 93:[ c.anim_stack = {AnimFrame(c.sprites.idle,0,"loop")} ] +2119 159:[ } ] >> 93:[ c.anim_stack = {AnimFrame(c.sprites.idle,0,"loop")} ] +2172 160:[ c.anim = c.sprites.idle ] >> 94:[ c.anim = c.sprites.idle ] +2197 161:[ c.keyframe = 0 ] >> 95:[ c.keyframe = 0 ] +2213 162:[ c.animrate = c.animrate or 1 ] >> 96:[ c.animrate = c.animrate or 1 ] +2243 163:[ c.anim_interupt = 0 ] >> 97:[ c.anim_interupt = 0 ] +2264 164:[ c.set_anim = function(self, tbl, interupt, mode) ] >> 98:[ c.set_anim = (self,tbl,interupt,mode) -> ] +2309 165:[ if type(tbl) ~= "table" then ] >> 99:[ if type(tbl) ~= "table" ] +2334 166:[ error("Tried to set anim to something that was not a table!", 2) ] >> 100:[ error("Tried to set anim to something that was not a table!",2) ] +2307 167:[ end ] >> 99:[ if type(tbl) ~= "table" ] +2402 168:[ if #tbl == 0 then ] >> 101:[ if #tbl == 0 ] +2416 169:[ error("Tried to set anim to an empty table", 2) ] >> 102:[ error("Tried to set anim to an empty table",2) ] +2400 170:[ end ] >> 101:[ if #tbl == 0 ] +2467 171:[ if interupt > self.anim_interupt then ] >> 103:[ if interupt > @anim_interupt ] +2497 172:[ table.insert(self.anim_stack, AnimFrame(tbl, interupt, mode)) ] >> 104:[ table.insert(@anim_stack,AnimFrame(tbl,interupt,mode)) ] +2555 173:[ self.anim = self.anim_stack[#self.anim_stack].anim ] >> 105:[ @anim = @anim_stack[#@anim_stack].anim ] +2597 174:[ self.anim_interupt = interupt ] >> 106:[ @anim_interupt = interupt ] +2465 175:[ end ] >> 103:[ if interupt > @anim_interupt ] +2264 176:[ end ] >> 98:[ c.set_anim = (self,tbl,interupt,mode) -> ] +2625 177:[ c.stop_anim = function(self, tbl, err_if_unable) ] >> 108:[ c.stop_anim = (self,tbl,err_if_unable=false) -> ] +2663 179:[ err_if_unable = false ] >> 108:[ c.stop_anim = (self,tbl,err_if_unable=false) -> ] +2675 181:[ local anim_found = false ] >> 109:[ anim_found = false ] +2706 182:[ for k, v in pairs(self.anim_stack) do ] >> 110:[ for k,v in pairs @anim_stack ] +2730 183:[ if v.anim == tbl then ] >> 111:[ if v.anim == tbl ] +2785 184:[ anim_found = true ] >> 113:[ anim_found = true ] +2807 185:[ table.remove(self.anim_stack, k) ] >> 114:[ table.remove(@anim_stack,k) ] +2728 187:[ end ] >> 111:[ if v.anim == tbl ] +2696 188:[ end ] >> 110:[ for k,v in pairs @anim_stack ] +2849 189:[ if err_if_unable then ] >> 116:[ if err_if_unable ] +2867 190:[ assertf(anim_found, "Could not find animation to remove") ] >> 117:[ assertf(anim_found, "Could not find animation to remove") ] +2847 191:[ end ] >> 116:[ if err_if_unable ] +2927 192:[ self.anim = self.anim_stack[#self.anim_stack].anim ] >> 118:[ @anim = @anim_stack[#@anim_stack].anim ] +2968 193:[ self.anim_interupt = self.anim_stack[#self.anim_stack].interupt ] >> 119:[ @anim_interupt = @anim_stack[#@anim_stack].interupt ] +2625 194:[ end ] >> 108:[ c.stop_anim = (self,tbl,err_if_unable=false) -> ] +3022 195:[ return c.node:action(coroutine.create(function() ] >> 121:[ c.node\action(coroutine.create(() -> ] +3066 196:[ while not c.dead do ] >> 122:[ while not c.dead ] +3081 197:[ c.keyframe = math.floor(am.current_time() * c.animrate) % #c.anim ] >> 123:[ c.keyframe = math.floor(am.current_time()*c.animrate) % #c.anim ] +3148 198:[ local spritename = c.anim[c.keyframe + 1] ] >> 124:[ spritename = c.anim[c.keyframe + 1] ] +3187 199:[ assert(spritename, "Failed to find an appropriate image to draw.") ] >> 125:[ assert(spritename, "Failed to find an appropriate image to draw.") ] +3291 200:[ c.node("sprite").source = spritename ] >> 127:[ c.node("sprite").source = spritename ] +3331 201:[ coroutine.yield() ] >> 128:[ coroutine.yield! ] +3061 202:[ end ] >> 122:[ while not c.dead ] +3366 203:[ local keyframe_0 = am.current_time() ] >> 130:[ keyframe_0 = am.current_time() ] +3404 204:[ while c.keyframe < #c.anim - 1 do ] >> 131:[ while c.keyframe < #c.anim - 1 ] +3433 205:[ c.keyframe = math.floor((am.current_time() - keyframe_0) * c.animrate) ] >> 132:[ c.keyframe = math.floor((am.current_time! - keyframe_0)*c.animrate) ] +3504 206:[ assert(c.anim[c.keyframe + 1], "Failed to find an appropriate image to draw.") ] >> 133:[ assert(c.anim[c.keyframe + 1], "Failed to find an appropriate image to draw.") ] +3586 207:[ c.node("sprite").source = c.anim[c.keyframe + 1] ] >> 134:[ c.node("sprite").source = c.anim[c.keyframe + 1] ] +3638 208:[ coroutine.yield() ] >> 135:[ coroutine.yield! ] +3399 209:[ end ] >> 131:[ while c.keyframe < #c.anim - 1 ] +3657 210:[ c:remove() ] >> 136:[ c\remove() ] +3670 211:[ return coroutine.yield(true) ] >> 137:[ coroutine.yield(true) ] +3022 212:[ end)) ] >> 121:[ c.node\action(coroutine.create(() -> ] +1858 213:[ end ] >> 90:[ mod.make_animate = (c) -> ] +3697 214:[ mod.inherited = { } ] >> 140:[ mod.inherited = {} ] +3716 215:[ local hp_bar_width = 20 ] >> 141:[ hp_bar_width = 20 ] +5899 221:[ return string.format("<%s, %s> at (%d)", self.__class.__name, (self.class and self.class.name or "no class"), (self.data and self.data.position or -1)) ] >> 187:[ return string.format( ] +6264 224:[ for k, v in pairs(self.class) do ] >> 201:[ for k,v in pairs(@class) ] +6284 225:[ if k:match("^default") then ] >> 202:[ if k\match("^default") ] +6309 226:[ local field = k:match("^default_(.*)") ] >> 203:[ field = k\match("^default_(.*)") ] +6348 227:[ if type(v) == "function" then ] >> 204:[ if type(v) == "function" ] +6376 228:[ self.data[field] = v() ] >> 205:[ @data[field] = v! ] +6408 230:[ self.data[field] = v ] >> 207:[ @data[field] = v ] +6282 232:[ end ] >> 202:[ if k\match("^default") ] +6254 233:[ end ] >> 201:[ for k,v in pairs(@class) ] +6457 236:[ assert(self.data[name], "Field must exist to be set") ] >> 210:[ assert(@data[name], "Field must exist to be set") ] +6509 237:[ self.data[name] = value ] >> 211:[ @data[name] = value ] +6531 238:[ print("my data table is:", self.data) ] >> 212:[ print("my data table is:",@data) ] +6568 239:[ if name == "hp" then ] >> 213:[ if name == "hp" ] +6585 240:[ local perc = (self.data.hp / self.data.maxhp) * 20 ] >> 214:[ perc = (@data.hp / @data.maxhp) * 20 ] +6625 241:[ self.node("hp_fill_scale").x = perc ] >> 215:[ @.node("hp_fill_scale").x = perc ] +6566 242:[ end ] >> 213:[ if name == "hp" ] +6679 245:[ print("Serializing char:", self) ] >> 218:[ print("Serializing char:",@) ] +6710 246:[ print("Name:", self.__class.__name) ] >> 219:[ print("Name:", @@__name) ] +6737 247:[ print("uname:", self.uname) ] >> 220:[ print("uname:",@uname) ] +6762 248:[ print("data:", self.data) ] >> 221:[ print("data:",@data) ] +6785 249:[ local data_abilities = { } ] >> 222:[ data_abilities = {} ] +6823 250:[ for i, ability in pairs(self.data.abilities) do ] >> 223:[ for i,ability in pairs(@data.abilities) ] +6850 251:[ data_abilities[i] = ability.__name ] >> 224:[ data_abilities[i] = ability.__name ] +6807 252:[ end ] >> 223:[ for i,ability in pairs(@data.abilities) ] +6887 253:[ local data_copy = table.shallow_copy(self.data) ] >> 225:[ data_copy = table.shallow_copy(@data) ] +6927 254:[ data_copy.abilities = data_abilities ] >> 226:[ data_copy.abilities = data_abilities ] +6966 255:[ print("class.name:", self.class.name) ] >> 227:[ print("class.name:",@class.name) ] +7001 256:[ local ret = am.to_json({ ] >> 228:[ ret = am.to_json({name:@@__name, uname:@uname, data:data_copy, class:@class.name}) ] +7024 257:[ name = self.__class.__name, ] >> 228:[ ret = am.to_json({name:@@__name, uname:@uname, data:data_copy, class:@class.name}) ] +7040 258:[ uname = self.uname, ] >> 228:[ ret = am.to_json({name:@@__name, uname:@uname, data:data_copy, class:@class.name}) ] +7053 259:[ data = data_copy, ] >> 228:[ ret = am.to_json({name:@@__name, uname:@uname, data:data_copy, class:@class.name}) ] +7070 260:[ class = self.class.name ] >> 228:[ ret = am.to_json({name:@@__name, uname:@uname, data:data_copy, class:@class.name}) ] +7001 261:[ }) ] >> 228:[ ret = am.to_json({name:@@__name, uname:@uname, data:data_copy, class:@class.name}) ] +7086 262:[ print("Ret is:", ret) ] >> 229:[ print("Ret is:",ret) ] +7109 263:[ return ret ] >> 230:[ ret ] +7141 266:[ print("Deserializing character") ] >> 233:[ print("Deserializing character") ] +7176 267:[ local tbl = am.parse_json(data) ] >> 234:[ tbl = am.parse_json(data) ] +7206 268:[ if mod.classes[tbl.class] then ] >> 235:[ if mod.classes[tbl.class] ] +7233 269:[ local data_abilities = { } ] >> 236:[ data_abilities = {} ] +7278 270:[ for i, ability_name in pairs(tbl.data.abilities) do ] >> 237:[ for i, ability_name in pairs(tbl.data.abilities) ] +7309 271:[ data_abilities[i] = ability_reg[ability_name] ] >> 238:[ data_abilities[i] = ability_reg[ability_name] ] +7256 272:[ end ] >> 237:[ for i, ability_name in pairs(tbl.data.abilities) ] +7358 273:[ tbl.data.abilities = data_abilities ] >> 239:[ tbl.data.abilities = data_abilities ] +7397 274:[ return mod.inherited[tbl.name](tbl.uname, tbl.data, mod.classes[tbl.class]) ] >> 240:[ return mod.inherited[tbl.name](tbl.uname, tbl.data, mod.classes[tbl.class]) ] +7481 275:[ elseif mod.enemies[tbl.class] then ] >> 241:[ elseif mod.enemies[tbl.class] ] +7508 276:[ local e = mod.Enemy(tbl.data, mod.enemies[tbl.class]) ] >> 242:[ e = mod.Enemy(tbl.data, mod.enemies[tbl.class]) ] +7559 277:[ e.uname = tbl.uname ] >> 243:[ e.uname = tbl.uname ] +7582 278:[ return e ] >> 244:[ return e ] +7616 282:[ return print("draw") ] >> 248:[ print("draw") ] +7647 285:[ return self.node:remove_all() ] >> 250:[ @node\remove_all! ] +7679 288:[ self.dead = true ] >> 252:[ @dead = true ] +7694 289:[ print(self, "is dieing, node is", self.node, "and color is", color) ] >> 253:[ print(@,"is dieing, node is",@.node,"and color is",color) ] +7754 290:[ self.node("char_sprite"):append(am.line(vec2(-10, -10), vec2(10, 10), 5, color.bright)) ] >> 254:[ @.node("char_sprite")\append(am.line(vec2(-10,-10),vec2(10,10),5,color.bright)) ] +7836 291:[ return self.node("char_sprite"):append(am.line(vec2(10, -10), vec2(-10, 10), 5, color.bright)) ] >> 255:[ @.node("char_sprite")\append(am.line(vec2(10,-10),vec2(-10,10),5,color.bright)) ] +7941 294:[ self.room = room ] >> 257:[ @room = room ] +7956 295:[ print("Character", self, "entered room", room) ] >> 258:[ print("Character",@,"entered room",room) ] +7999 296:[ self.node("char_translate").y = room.floor_y ] >> 259:[ @.node("char_translate").y = room.floor_y ] +8045 297:[ if room.__class == LobbyRoom then ] >> 260:[ if room.__class == LobbyRoom ] +8075 298:[ print("Class was lobbyRoom") ] >> 261:[ print("Class was lobbyRoom") ] +8107 299:[ local rng_x = math.random(-(main.width / 2), (main.width / 2)) ] >> 262:[ rng_x = math.random(-(main.width/2), (main.width/2)) ] +8163 300:[ print("RNG x:", rng_x) ] >> 263:[ print("RNG x:",rng_x) ] +8188 301:[ self.node("char_translate").x = rng_x ] >> 264:[ @.node("char_translate").x = rng_x ] +8233 303:[ print("Class was not LobbyRoom") ] >> 266:[ print("Class was not LobbyRoom") ] +8269 304:[ local x_pos = self.room:player_location_of(self.data.position) ] >> 267:[ x_pos = @room\player_location_of(@data.position) ] +8321 305:[ print("Got x pos for", self, x_pos) ] >> 268:[ print("Got x pos for",@,x_pos) ] +8355 306:[ self.node("char_translate").x = x_pos + math.random(-15, 15) ] >> 269:[ @.node("char_translate").x = x_pos + math.random(-15,15) --some random variance to stop stacking ] +8480 310:[ assert(newclass, "Cannot set a class to nil") ] >> 271:[ assert(newclass, "Cannot set a class to nil") ] +8528 311:[ self.class = newclass ] >> 272:[ @class = newclass ] +8548 312:[ self:calc_class_values() ] >> 273:[ @calc_class_values! ] +8570 313:[ self.node("char_sprite").source = newclass.sprite ] >> 274:[ @.node("char_sprite").source = newclass.sprite ] +8645 316:[ self.data.position = pos ] >> 277:[ @data.position = pos ] +8694 319:[ self.data.location = loc ] >> 280:[ @data.location = loc ] +3916 325:[ assert(charclass, "Charclass may not be nil") ] >> 147:[ assert(charclass, "Charclass may not be nil") ] +3964 326:[ self.uname = uname or false ] >> 148:[ @uname = uname or false ] +3990 327:[ self.data = data or { ] >> 149:[ @data = data or { ] +4018 328:[ status = "active", ] >> 150:[ status: "active", ] +4041 329:[ location = -1, ] >> 151:[ location: -1, ] +4058 330:[ position = charclass.default_position ] >> 152:[ position: charclass.default_position ] +3990 331:[ } ] >> 149:[ @data = data or { ] +4092 332:[ self.class = charclass ] >> 154:[ @class = charclass ] +4113 333:[ assert(self.class.name, "Character classes must have a name") ] >> 155:[ assert(@class.name, "Character classes must have a name") ] +4173 334:[ self:calc_class_values() ] >> 156:[ @calc_class_values! ] +4195 335:[ self.node = am.group() ] >> 157:[ @node = am.group! ] +4270 336:[ self.node:append(am.translate(0, 0):tag("char_translate") ^ am.sprite(self.class.sprite, color.white, "center", "bottom"):tag("char_sprite")) ] >> 160:[ @node\append(am.translate(0,0)\tag("char_translate")^ am.sprite(@class.sprite,color.white,"center","bottom")\tag("char_sprite")) ] +4401 337:[ print("A character has been created!") ] >> 161:[ print("A character has been created!") ] +4442 338:[ print(debug.traceback()) ] >> 162:[ print(debug.traceback!) ] +4487 339:[ local healthbar_trans = am.translate(0, 60) ] >> 164:[ healthbar_trans = am.translate(0,60) ] +4526 340:[ local healthbar_left = am.sprite("data/bar_left.png", color.white, "left", "center"):tag("hp_l") ] >> 165:[ healthbar_left = am.sprite("data/bar_left.png", color.white,"left","center")\tag("hp_l") ] +4617 341:[ local healthbar_right = am.sprite("data/bar_right.png", color.white, "right", "center"):tag("hp_r") ] >> 166:[ healthbar_right = am.sprite("data/bar_right.png", color.white, "right","center")\tag("hp_r") ] +4712 342:[ local healthbar_bar = am.sprite("data/bar_mid.png", color.white, "left", "center"):tag("hp_b") ] >> 167:[ healthbar_bar = am.sprite("data/bar_mid.png", color.white,"left","center")\tag("hp_b") ] +4801 343:[ local healthbar_fill = am.sprite("data/bar_fill.png", color.white, "left", "center"):tag("hp_f") ] >> 168:[ healthbar_fill = am.sprite("data/bar_fill.png", color.white,"left","center")\tag("hp_f") ] +4892 344:[ local healthbar_scale = am.scale(hp_bar_width, 1) ] >> 169:[ healthbar_scale = am.scale(hp_bar_width,1) ] +4937 345:[ local healthbar_fill_scale = am.scale(hp_bar_width + 1, 1):tag("hp_fill_scale") ] >> 170:[ healthbar_fill_scale = am.scale(hp_bar_width + 1,1)\tag("hp_fill_scale") ] +5012 346:[ healthbar_trans:append(am.translate(-hp_bar_width, 0) ^ healthbar_left) ] >> 171:[ healthbar_trans\append(am.translate(-hp_bar_width,0)^ healthbar_left) ] +5084 347:[ healthbar_trans:append(am.translate(hp_bar_width, 0) ^ healthbar_right) ] >> 172:[ healthbar_trans\append(am.translate(hp_bar_width,0)^ healthbar_right) ] +5156 348:[ healthbar_trans:append(am.translate(-hp_bar_width / 2, 0) ^ healthbar_scale ^ healthbar_bar) ] >> 173:[ healthbar_trans\append(am.translate(-hp_bar_width/2,0)^ healthbar_scale^ healthbar_bar) ] +5246 349:[ healthbar_trans:append(am.translate((-hp_bar_width / 2) - 1, 0) ^ healthbar_fill_scale ^ healthbar_fill) ] >> 174:[ healthbar_trans\append(am.translate((-hp_bar_width/2) - 1,0)^ healthbar_fill_scale^ healthbar_fill) ] +5348 350:[ self.node("char_sprite"):append(healthbar_trans) ] >> 175:[ @.node("char_sprite")\append(healthbar_trans) ] +5419 351:[ assert(self.__class.draw, "Characters must have a draw() method") ] >> 177:[ assert(@.__class.draw,"Characters must have a draw() method") ] +5483 352:[ table.insert(mod.characters, self) ] >> 178:[ table.insert(mod.characters,@) ] +5516 353:[ constrain(self, "set anim", function(self, value) ] >> 179:[ constrain(@,"set anim", (self,value) -> ] +5559 354:[ assertf(type(value) == "table", "Tried to set anim on %q to something other than a table (%q)", self, type(value)) ] >> 180:[ assertf(type(value) == "table", "Tried to set anim on %q to something other than a table (%q)",@, type(value)) ] +5673 355:[ return assert(#value > 0, "Tried to set animation for char to something with 0 frames!") ] >> 181:[ assert(#value > 0, "Tried to set animation for char to something with 0 frames!") ] +5516 356:[ end) ] >> 179:[ constrain(@,"set anim", (self,value) -> ] +5761 357:[ return assert(self.__class ~= Character, "Character class must be subclassed") ] >> 183:[ assert(@.__class != Character,"Character class must be subclassed") ] +3809 371:[ self.classes = { } ] >> 144:[ @classes = {} ] +3824 372:[ self.players = { } ] >> 145:[ @players = {} -- players singleton, [peerid] = Character ] +6074 374:[ assert(c, "Inheritance must exist") ] >> 195:[ assert(c, "Inheritance must exist") ] +6112 375:[ assert(c.__name, "Inherited class must have a .__name") ] >> 196:[ assert(c.__name, "Inherited class must have a .__name") ] +6170 376:[ self.__class.classes[c.__name] = c ] >> 197:[ @@.classes[c.__name] = c ] +6197 377:[ mod.inherited[c.__name] = c ] >> 198:[ mod.inherited[c.__name] = c ] +8716 381:[ mod.enemy_counter = 0 ] >> 282:[ mod.enemy_counter = 0 ] +8757 385:[ local _parent_0 = Character ] >> 283:[ class Enemy extends Character ] +8927 388:[ self(data, eclass) ] >> 288:[ @(data, eclass) ] +8946 389:[ mod.enemy_counter = mod.enemy_counter + 1 ] >> 290:[ mod.enemy_counter += 1 ] +8990 392:[ return string.format("<%s> at (%d)", self.uname, self.data.position or 0) ] >> 292:[ return string.format("<%s> at (%d)",@uname, @data.position or 0) ] +9127 395:[ print("Character", self, "entered room", room) ] >> 295:[ print("Character",@,"entered room",room) ] +9170 396:[ self.room = room ] >> 296:[ @room = room ] +9185 397:[ self.node("char_translate").y = self.room.floor_y ] >> 297:[ @.node("char_translate").y = @room.floor_y ] +9230 398:[ self.node("char_translate").x = self.room:enemy_location_of(self.data.position) ] >> 298:[ @.node("char_translate").x = @room\enemy_location_of(@data.position) ] +9325 401:[ return self.class.select_action(self) ] >> 301:[ return @class.select_action(@) ] +8794 408:[ _class_0.__parent.__init(self, eclass.name .. ":" .. tostring(mod.enemy_counter), data, eclass) ] >> 285:[ super(eclass.name .. ":" .. tostring(mod.enemy_counter), data, eclass) ] +8867 409:[ mod.enemy_counter = mod.enemy_counter + 1 ] >> 286:[ mod.enemy_counter += 1 ] +9357 438:[ mod["Character"] = Character ] >> 303:[ mod["Character"] = Character ] +9386 439:[ mod["KeyInput"] = KeyInput ] >> 304:[ mod["KeyInput"] = KeyInput ] +9413 440:[ mod["Enemy"] = Enemy ] >> 305:[ mod["Enemy"] = Enemy ] +9475 441:[ return mod ] >> 307:[ mod ] |
