Pos Lua >> Moon 24 1:[ local bp = require("broadphase") ] >> 2:[ bp = require "broadphase" ] 50 2:[ local main = require("main") ] >> 3:[ main = require "main" ] 72 3:[ local action = require("action") ] >> 4:[ action = require "action" ] 98 4:[ local color = require("color") ] >> 5:[ color = require "color" ] 122 5:[ local reg = require("ability_reg") ] >> 6:[ reg = require "ability_reg" ] 150 6:[ local char = require("char") ] >> 7:[ char = require "char" ] 189 8:[ Enemy = char.Enemy ] >> 8:[ import Enemy from char ] 195 9:[ local mod = ... ] >> 9:[ mod = ... ] 206 10:[ mod.big_frame_top_left = { ] >> 11:[ mod.big_frame_top_left = { ] 242 11:[ texture = "ui.png", ] >> 12:[ texture: "ui.png", ] 257 12:[ s1 = 0, ] >> 13:[ s1: 0 ] 264 13:[ t1 = 0, ] >> 14:[ t1: 0 ] 271 14:[ s2 = 0, ] >> 15:[ s2: 0 ] 278 15:[ t2 = 0 ] >> 16:[ t2: 0 ] 206 16:[ } ] >> 11:[ mod.big_frame_top_left = { ] 375 17:[ mod.create_big_button = function(node, segments, x, y) ] >> 20:[ mod.create_big_button = (node, segments, x, y) -> ] 439 18:[ local section_width = 32 ] >> 22:[ section_width = 32 ] 460 19:[ local ret = { } ] >> 24:[ ret = {} ] 470 20:[ local trans = am.translate(x, y) ] >> 25:[ trans = am.translate(x,y) ] 497 21:[ local button = am.group() ] >> 26:[ button = am.group! ] 517 22:[ button:append(trans ^ am.sprite("data/big_frame_top_left.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 27:[ button\append(trans^ am.sprite("data/big_frame_top_left.png",vec4(1,1,1,1),"left","top")) ] 615 23:[ for i = 1, segments - 2 do ] >> 28:[ for i = 1,segments - 2 ] 633 24:[ button:append(am.translate(((-32) * (segments / 2)) + 32 * i, y) ^ am.sprite("data/big_frame_top_mid.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 29:[ button\append(am.translate(((-32)*(segments/2)) + 32*i,y)^ am.sprite("data/big_frame_top_mid.png",vec4(1,1,1,1),"left","top")) ] 608 25:[ end ] >> 28:[ for i = 1,segments - 2 ] 761 26:[ button:append(am.translate((32 * ((segments / 2) - 1)), y) ^ am.sprite("data/big_frame_top_right.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 30:[ button\append(am.translate((32*((segments/2)-1)),y)^ am.sprite("data/big_frame_top_right.png",vec4(1,1,1,1),"left","top")) ] 885 27:[ ret["node"] = button ] >> 31:[ ret["node"] = button ] 907 28:[ bp.add(ret, x, y, segments * 32, 64) ] >> 32:[ bp.add(ret,x,y,segments*32,64) ] 939 29:[ node:append(button) ] >> 33:[ node\append(button) ] 960 30:[ return ret ] >> 34:[ ret ] 375 31:[ end ] >> 20:[ mod.create_big_button = (node, segments, x, y) -> ] 966 32:[ mod.create_small_button = function(node, segments, x, y) ] >> 37:[ mod.create_small_button = (node, segments, x, y) -> ] 1019 33:[ assert(node ~= nil, "node was nil") ] >> 38:[ assert(node ~= nil, "node was nil") ] 1056 34:[ assert(type(segments) == "number", "segments must be a numbeR") ] >> 39:[ assert(type(segments) == "number","segments must be a numbeR") ] 1120 35:[ assert(segments > 1, "segments must be at least 2") ] >> 40:[ assert(segments > 1, "segments must be at least 2") ] 1186 36:[ local section_width = 18 ] >> 42:[ section_width = 18 ] 1206 37:[ local section_height = 40 ] >> 43:[ section_height = 40 ] 1228 38:[ local ret = { } ] >> 45:[ ret = {} ] 1238 39:[ local trans = am.translate(x, y) ] >> 46:[ trans = am.translate(x,y) ] 1265 40:[ local button = am.group() ] >> 47:[ button = am.group! ] 1285 41:[ button:append(trans ^ am.sprite("data/small_frame_left.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 48:[ button\append(trans^ am.sprite("data/small_frame_left.png",vec4(1,1,1,1),"left","top")) ] 1381 42:[ for i = 1, segments - 2 do ] >> 49:[ for i = 1,segments - 2 ] 1399 43:[ button:append(am.translate(x + (section_width * i), y) ^ am.sprite("data/small_frame_mid.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 50:[ button\append(am.translate(x + (section_width*i),y)^ am.sprite("data/small_frame_mid.png",vec4(1,1,1,1),"left","top")) ] 1374 44:[ end ] >> 49:[ for i = 1,segments - 2 ] 1519 45:[ button:append(am.translate(x + (section_width * (segments - 1)), y) ^ am.sprite("data/small_frame_right.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 51:[ button\append(am.translate(x+(section_width*(segments - 1)),y)^ am.sprite("data/small_frame_right.png",vec4(1,1,1,1),"left","top")) ] 1652 46:[ ret["node"] = button ] >> 52:[ ret["node"] = button ] 1674 47:[ bp.add(ret, x, y, segments * section_width, section_height) ] >> 53:[ bp.add(ret,x,y,segments*section_width,section_height) ] 1729 48:[ node:append(button) ] >> 54:[ node\append(button) ] 1750 49:[ return ret ] >> 55:[ ret ] 966 50:[ end ] >> 37:[ mod.create_small_button = (node, segments, x, y) -> ] 1755 51:[ mod.create_any_button = function(node, x_segs, y_segs, x, y) ] >> 57:[ mod.create_any_button = (node, x_segs, y_segs, x, y) -> ] 1812 52:[ assert(x_segs >= 2, "x must have at least 2 segments") ] >> 58:[ assert(x_segs >= 2, "x must have at least 2 segments") ] 1868 53:[ assert(y_segs >= 2, "y must have at leats 2 segments") ] >> 59:[ assert(y_segs >= 2, "y must have at leats 2 segments") ] 1924 54:[ local section_width, section_height = 32, 32 ] >> 60:[ section_width, section_height = 32,32 ] 1963 55:[ local ret = { } ] >> 61:[ ret = {} ] 1973 56:[ local button = am.group() ] >> 62:[ button = am.group! ] 1993 57:[ button:append(am.translate(x, y) ^ am.sprite("data/any_frame_top_left.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 63:[ button\append(am.translate(x,y)^ am.sprite("data/any_frame_top_left.png",vec4(1,1,1,1),"left","top")) ] 2103 58:[ for i = 1, x_segs - 2 do ] >> 64:[ for i = 1, x_segs - 2 ] 2120 59:[ button:append(am.translate(x + (i * section_width), y) ^ am.sprite("data/any_frame_top_mid.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 65:[ button\append(am.translate(x + (i * section_width),y)^ am.sprite("data/any_frame_top_mid.png",vec4(1,1,1,1),"left","top")) ] 2096 60:[ end ] >> 64:[ for i = 1, x_segs - 2 ] 2244 61:[ button:append(am.translate(x + ((x_segs - 1) * section_width), y) ^ am.sprite("data/any_frame_top_right.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 66:[ button\append(am.translate(x + ((x_segs-1)*section_width),y)^ am.sprite("data/any_frame_top_right.png",vec4(1,1,1,1),"left","top")) ] 2384 62:[ for i = 1, y_segs - 2 do ] >> 67:[ for i = 1, y_segs - 2 ] 2401 63:[ button:append(am.translate(x, y - (i * section_height)) ^ am.sprite("data/any_frame_mid_left.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 68:[ button\append(am.translate(x,y - (i * section_height))^ am.sprite("data/any_frame_mid_left.png",vec4(1,1,1,1),"left","top")) ] 2535 64:[ for j = 1, x_segs - 2 do ] >> 69:[ for j = 1, x_segs - 2 ] 2553 65:[ button:append(am.translate(x + (j * section_width), y - (i * section_height)) ^ am.sprite("data/any_frame_mid_mid.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 70:[ button\append(am.translate(x + (j * section_width),y - (i * section_height))^ am.sprite("data/any_frame_mid_mid.png",vec4(1,1,1,1),"left","top")) ] 2528 66:[ end ] >> 69:[ for j = 1, x_segs - 2 ] 2701 67:[ button:append(am.translate(x + ((x_segs - 1) * section_width), y - (i * section_height)) ^ am.sprite("data/any_frame_mid_right.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 71:[ button\append(am.translate(x + ((x_segs-1)*section_width),y - (i * section_height))^ am.sprite("data/any_frame_mid_right.png",vec4(1,1,1,1),"left","top")) ] 2377 68:[ end ] >> 67:[ for i = 1, y_segs - 2 ] 2857 69:[ button:append(am.translate(x, y - ((y_segs - 1) * section_height)) ^ am.sprite("data/any_frame_bot_left.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 72:[ button\append(am.translate(x,y - ((y_segs-1)*section_height))^ am.sprite("data/any_frame_bot_left.png",vec4(1,1,1,1),"left","top")) ] 2997 70:[ for i = 1, x_segs - 2 do ] >> 73:[ for i = 1, x_segs - 2 ] 3014 71:[ button:append(am.translate(x + (i * section_width), y - ((y_segs - 1) * section_height)) ^ am.sprite("data/any_frame_bot_mid.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 74:[ button\append(am.translate(x + (i * section_width),y - ((y_segs-1)*section_height))^ am.sprite("data/any_frame_bot_mid.png",vec4(1,1,1,1),"left","top")) ] 2990 72:[ end ] >> 73:[ for i = 1, x_segs - 2 ] 3168 73:[ button:append(am.translate(x + ((x_segs - 1) * section_width), y - ((y_segs - 1) * section_height)) ^ am.sprite("data/any_frame_bot_right.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 75:[ button\append(am.translate(x+((x_segs-1)*section_width),y - ((y_segs-1)*section_height))^ am.sprite("data/any_frame_bot_right.png",vec4(1,1,1,1),"left","top")) ] 3329 74:[ button:append(am.translate(x, y):tag("loc")) ] >> 76:[ button\append(am.translate(x,y)\tag("loc")) ] 3374 75:[ ret["node"] = button ] >> 77:[ ret["node"] = button ] 3396 76:[ bp.add(ret, x, y, x_segs * section_width, y_segs * section_height) ] >> 78:[ bp.add(ret,x,y,x_segs*section_width,y_segs*section_height) ] 3456 77:[ node:append(button) ] >> 79:[ node\append(button) ] 3477 78:[ return ret ] >> 80:[ ret ] 1755 79:[ end ] >> 57:[ mod.create_any_button = (node, x_segs, y_segs, x, y) -> ] 3482 80:[ mod.create_char_selector2 = function(node) ] >> 82:[ mod.create_char_selector2 = (node) -> ] 3521 81:[ local left = mod.create_any_button(node, 2, 2, 96, 100) ] >> 83:[ left = mod.create_any_button(node,2,2,96,100) ] 3568 82:[ local right = mod.create_any_button(node, 2, 2, -96 - (32 * 2), 100) ] >> 84:[ right = mod.create_any_button(node,2,2,-96-(32*2),100) ] 3624 83:[ local text = am.text("Loading...", vec4(1, 1, 1, 1), "center", "top") ] >> 85:[ text = am.text("Loading...",vec4(1,1,1,1),"center","top") ] 3683 84:[ node:append(am.translate(0, 100) ^ text) ] >> 86:[ node\append(am.translate(0,100)^ text) ] 3724 86:[ left, ] >> 87:[ {left, right, text} ] 3729 87:[ right, ] >> 87:[ {left, right, text} ] 3736 88:[ text ] >> 87:[ {left, right, text} ] 3482 90:[ end ] >> 82:[ mod.create_char_selector2 = (node) -> ] 3744 91:[ mod.create_lobby_player = function(node, peerid) ] >> 89:[ mod.create_lobby_player = (node, peerid) -> ] 3789 92:[ local floor_y = -200 ] >> 90:[ floor_y = -200 ] 3805 93:[ local rng_x = math.random(main.width) - (main.width / 2) ] >> 91:[ rng_x = math.random(main.width) - (main.width/2) ] 3744 94:[ end ] >> 89:[ mod.create_lobby_player = (node, peerid) -> ] 3855 95:[ mod.create_char_selector = function(node) ] >> 93:[ mod.create_char_selector = (node) -> ] 3893 96:[ local s = am.group() ] >> 94:[ s = am.group! ] 3908 97:[ local slx = (-96 / 2) - 18 ] >> 95:[ slx = (-96/2)-18 ] 3926 98:[ local sly = (96 / 2) ] >> 96:[ sly = (96/2) ] 3940 99:[ local srx = (96 / 2) ] >> 97:[ srx = (96/2) ] 3954 100:[ local sry = (96 / 2) ] >> 98:[ sry = (96/2) ] 3968 101:[ local scroll_left_node = am.translate(slx, sly) ^ am.sprite("data/selector_left.png", vec4(1, 1, 1, 1), "left", "top") ] >> 99:[ scroll_left_node = am.translate(slx,sly)^ am.sprite("data/selector_left.png", vec4(1,1,1,1), "left","top") ] 4076 102:[ local scroll_left = { ] >> 100:[ scroll_left = { ] 4099 103:[ node = scroll_left_node ] >> 101:[ node: scroll_left_node ] 4076 104:[ } ] >> 100:[ scroll_left = { ] 4121 105:[ local scroll_right_node = am.translate(srx, sry) ^ am.sprite("data/selector_right.png", vec4(1, 1, 1, 1), "left", "top") ] >> 103:[ scroll_right_node = am.translate(srx,sry)^ am.sprite("data/selector_right.png", vec4(1,1,1,1), "left","top") ] 4231 106:[ local scroll_right = { ] >> 104:[ scroll_right = { ] 4255 107:[ node = scroll_right_node ] >> 105:[ node: scroll_right_node ] 4231 108:[ } ] >> 104:[ scroll_right = { ] 4278 109:[ s:append(scroll_left_node) ] >> 107:[ s\append(scroll_left_node) ] 4306 110:[ s:append(scroll_right_node) ] >> 108:[ s\append(scroll_right_node) ] 4335 111:[ bp.add(scroll_left, slx, sly, 18, 40) ] >> 109:[ bp.add(scroll_left,slx,sly,18,40) ] 4370 112:[ bp.add(scroll_right, srx, sry, 18, 40) ] >> 110:[ bp.add(scroll_right,srx,sry,18,40) ] 4406 113:[ node:append(s) ] >> 111:[ node\append(s) ] 4423 115:[ scroll_left, ] >> 112:[ {scroll_left, scroll_right} ] 4435 116:[ scroll_right ] >> 112:[ {scroll_left, scroll_right} ] 3855 118:[ end ] >> 93:[ mod.create_char_selector = (node) -> ] 4451 119:[ mod.fadeout = function() ] >> 114:[ mod.fadeout = () -> ] 4472 120:[ local fadeout_walltime = 0.1 ] >> 115:[ fadeout_walltime = 0.1 ] 4496 121:[ local screen = main.root("screen") ] >> 116:[ screen = main.root("screen") ] 4526 122:[ local hw = main.width / 2 ] >> 117:[ hw = main.width/2 ] 4545 123:[ local hh = main.height / 2 ] >> 118:[ hh = main.height/2 ] 4565 124:[ local bg = color.bg ] >> 119:[ bg = color.bg ] 4580 125:[ local start_color = vec4(bg.r, bg.g, bg.b, 0) ] >> 120:[ start_color = vec4(bg.r,bg.g,bg.b,0) ] 4618 126:[ local fadeout = am.rect(-hw, hh, hw, -hh, color.bg):tag("fade") ] >> 121:[ fadeout = am.rect(-hw,hh,hw,-hh,color.bg)\tag("fade") ] 4673 127:[ return screen:action(am.tween(0.1, { ] >> 122:[ screen\action(am.tween(0.1, { ] 4711 128:[ color = color.bg ] >> 123:[ color: color.bg ] 4673 129:[ })) ] >> 122:[ screen\action(am.tween(0.1, { ] 4451 130:[ end ] >> 114:[ mod.fadeout = () -> ] 4727 131:[ mod.fadein = function() ] >> 126:[ mod.fadein = () -> ] 4747 132:[ local fadein_walltime = 0.1 ] >> 127:[ fadein_walltime = 0.1 ] 4770 133:[ local fade = main.root("fade") ] >> 128:[ fade = main.root("fade") ] 4796 134:[ return fade:action(am.tween(0.1, { ] >> 129:[ fade\action(am.tween(0.1, { ] 4832 135:[ color = color.transparent ] >> 130:[ color: color.transparent ] 4796 136:[ })) ] >> 129:[ fade\action(am.tween(0.1, { ] 4727 137:[ end ] >> 126:[ mod.fadein = () -> ] 4857 138:[ mod.create_join_input = function(node) ] >> 133:[ mod.create_join_input = (node) -> ] 4892 139:[ local segments = 3 ] >> 134:[ segments=3 ] 4904 140:[ local button_width = segments * 18 ] >> 135:[ button_width = segments*18 ] 4932 141:[ local button_height = 40 ] >> 136:[ button_height = 40 ] 4952 142:[ local cell_padding = 18 ] >> 137:[ cell_padding = 18 ] 4971 143:[ local grid_w = 4 ] >> 138:[ grid_w = 4 ] 4983 144:[ local grid_h = 4 ] >> 139:[ grid_h = 4 ] 4995 145:[ local buttons = { } ] >> 140:[ buttons = {} ] 5056 146:[ local start_x = cell_padding - ((grid_w / 2) * button_width) - (((grid_w - 1) / 2) * cell_padding) ] >> 142:[ start_x = cell_padding - ((grid_w/2) * button_width) - (((grid_w - 1)/2) * cell_padding) ] 5146 147:[ local start_y = 0 + ((grid_h / 2) * button_height) + (((grid_h - 1) / 2) * cell_padding) ] >> 143:[ start_y = 0 + ((grid_h/2) * button_height) + (((grid_h - 1)/2) * cell_padding) ] 5233 148:[ for i = 0, grid_h - 1 do ] >> 144:[ for i = 0,grid_h - 1 ] 5256 149:[ for j = 0, grid_w - 1 do ] >> 145:[ for j = 0, grid_w - 1 ] 5274 150:[ local button_x = start_x + (j * button_width) + ((j - 1) * cell_padding) ] >> 146:[ button_x = start_x + (j * button_width) + ((j-1) * cell_padding) ] 5342 151:[ local button_y = start_y - (i * button_height) - ((i - 1) * cell_padding) ] >> 147:[ button_y = start_y - (i * button_height) - ((i-1) * cell_padding) ] 5411 152:[ local small_button = mod.create_small_button(node, 3, button_x, button_y) ] >> 148:[ small_button = mod.create_small_button(node,3,button_x,button_y) ] 5479 153:[ table.insert(buttons, small_button) ] >> 149:[ table.insert(buttons, small_button) ] 5518 154:[ local rnode = small_button.node ] >> 150:[ rnode = small_button.node ] 5547 155:[ local text_map = { ] >> 151:[ text_map = { ] 5564 156:[ "0", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5568 157:[ "1", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5572 158:[ "2", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5576 159:[ "3", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5580 160:[ "4", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5584 161:[ "5", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5588 162:[ "6", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5592 163:[ "7", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5596 164:[ "8", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5600 165:[ "9", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5604 166:[ "a", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5608 167:[ "b", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5612 168:[ "c", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5616 169:[ "d", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5620 170:[ "e", ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5624 171:[ "f" ] >> 152:[ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" ] 5547 172:[ } ] >> 151:[ text_map = { ] 5636 173:[ local bt = text_map[(i * grid_w) + j + 1] ] >> 154:[ bt = text_map[(i * grid_w) + j + 1] ] 5675 174:[ rnode:append(am.translate(button_x + 16, button_y - 10) ^ am.text(bt, vec4(1, 1, 1, 1), "left", "top")) ] >> 155:[ rnode\append(am.translate(button_x+16,button_y-10)^ am.text(bt,vec4(1,1,1,1),"left","top")) ] 5770 175:[ small_button["text"] = bt ] >> 156:[ small_button["text"] = bt ] 5249 176:[ end ] >> 145:[ for j = 0, grid_w - 1 ] 5226 177:[ end ] >> 144:[ for i = 0,grid_h - 1 ] 5801 178:[ local selected = mod.create_big_button(node, 6, -32 * 3, -100) ] >> 158:[ selected = mod.create_big_button(node,6,-32*3,-100) ] 5854 179:[ return buttons ] >> 159:[ buttons ] 4857 180:[ end ] >> 133:[ mod.create_join_input = (node) -> ] 5863 181:[ mod.tween_hit = function(char, target, at_f) ] >> 161:[ mod.tween_hit = (char, target, at_f) -> -- char is a character, target is a location (number) ] 5958 182:[ local x_from, x_to = char.node("char_translate").x, 0 ] >> 162:[ x_from, x_to = char.node("char_translate").x, 0 ] 6007 183:[ local room = char.room ] >> 163:[ room = char.room ] 6027 184:[ if char.__class == Enemy then ] >> 164:[ if char.__class == Enemy then ] 6113 185:[ x_to = room:player_location_of(target) ] >> 166:[ x_to = room\player_location_of(target) ] 6217 187:[ x_to = room:enemy_location_of(target) ] >> 169:[ x_to = room\enemy_location_of(target) ] 6256 189:[ am.wait(am.tween(char.node("char_translate"), 0.1, { ] >> 170:[ am.wait(am.tween(char.node("char_translate"), 0.1, {x: x_to},am.windup)) ] 6310 190:[ x = x_to ] >> 170:[ am.wait(am.tween(char.node("char_translate"), 0.1, {x: x_to},am.windup)) ] 6256 191:[ }, am.windup)) ] >> 170:[ am.wait(am.tween(char.node("char_translate"), 0.1, {x: x_to},am.windup)) ] 6332 192:[ if at_f then ] >> 171:[ if at_f ] 6340 193:[ at_f() ] >> 172:[ at_f! ] 6330 194:[ end ] >> 171:[ if at_f ] 6347 195:[ return am.wait(am.tween(char.node("char_translate"), 0.1, { ] >> 173:[ am.wait(am.tween(char.node("char_translate"), 0.1, {x: x_from},am.linear)) ] 6401 196:[ x = x_from ] >> 173:[ am.wait(am.tween(char.node("char_translate"), 0.1, {x: x_from},am.linear)) ] 6347 197:[ }, am.linear)) ] >> 173:[ am.wait(am.tween(char.node("char_translate"), 0.1, {x: x_from},am.linear)) ] 5863 198:[ end ] >> 161:[ mod.tween_hit = (char, target, at_f) -> -- char is a character, target is a location (number) ] 6423 199:[ mod.build_infocard = function(node, ability) ] >> 175:[ mod.build_infocard = (node, ability) -> ] 6464 200:[ local x_segs = 10 ] >> 176:[ x_segs = 10 ] 6477 201:[ local y_segs = 4 ] >> 177:[ y_segs = 4 ] 6489 202:[ local x = -310 ] >> 178:[ x = -310 ] 6499 203:[ local y = 80 ] >> 179:[ y = 80 ] 6508 204:[ local section_width, section_height = 32, 32 ] >> 180:[ section_width, section_height = 32,32 ] 6547 205:[ local button = am.group() ] >> 181:[ button = am.group! ] 6567 206:[ button:append(am.translate(x, y) ^ am.sprite("data/any_frame_top_left.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 182:[ button\append(am.translate(x,y)^ am.sprite("data/any_frame_top_left.png",vec4(1,1,1,1),"left","top")) ] 6677 207:[ for i = 1, x_segs - 2 do ] >> 183:[ for i = 1, x_segs - 2 ] 6694 208:[ button:append(am.translate(x + (i * section_width), y) ^ am.sprite("data/any_frame_top_mid.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 184:[ button\append(am.translate(x + (i * section_width),y)^ am.sprite("data/any_frame_top_mid.png",vec4(1,1,1,1),"left","top")) ] 6670 209:[ end ] >> 183:[ for i = 1, x_segs - 2 ] 6818 210:[ button:append(am.translate(x + ((x_segs - 1) * section_width), y) ^ am.sprite("data/any_frame_top_right.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 185:[ button\append(am.translate(x + ((x_segs-1)*section_width),y)^ am.sprite("data/any_frame_top_right.png",vec4(1,1,1,1),"left","top")) ] 6958 211:[ for i = 1, y_segs - 2 do ] >> 186:[ for i = 1, y_segs - 2 ] 6975 212:[ button:append(am.translate(x, y - (i * section_height)) ^ am.sprite("data/any_frame_mid_left.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 187:[ button\append(am.translate(x,y - (i * section_height))^ am.sprite("data/any_frame_mid_left.png",vec4(1,1,1,1),"left","top")) ] 7109 213:[ for j = 1, x_segs - 2 do ] >> 188:[ for j = 1, x_segs - 2 ] 7127 214:[ button:append(am.translate(x + (j * section_width), y - (i * section_height)) ^ am.sprite("data/any_frame_mid_mid.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 189:[ button\append(am.translate(x + (j * section_width),y - (i * section_height))^ am.sprite("data/any_frame_mid_mid.png",vec4(1,1,1,1),"left","top")) ] 7102 215:[ end ] >> 188:[ for j = 1, x_segs - 2 ] 7275 216:[ button:append(am.translate(x + ((x_segs - 1) * section_width), y - (i * section_height)) ^ am.sprite("data/any_frame_mid_right.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 190:[ button\append(am.translate(x + ((x_segs-1)*section_width),y - (i * section_height))^ am.sprite("data/any_frame_mid_right.png",vec4(1,1,1,1),"left","top")) ] 6951 217:[ end ] >> 186:[ for i = 1, y_segs - 2 ] 7431 218:[ button:append(am.translate(x, y - ((y_segs - 1) * section_height)) ^ am.sprite("data/any_frame_bot_left.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 191:[ button\append(am.translate(x,y - ((y_segs-1)*section_height))^ am.sprite("data/any_frame_bot_left.png",vec4(1,1,1,1),"left","top")) ] 7571 219:[ for i = 1, x_segs - 2 do ] >> 192:[ for i = 1, x_segs - 2 ] 7588 220:[ button:append(am.translate(x + (i * section_width), y - ((y_segs - 1) * section_height)) ^ am.sprite("data/any_frame_bot_mid.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 193:[ button\append(am.translate(x + (i * section_width),y - ((y_segs-1)*section_height))^ am.sprite("data/any_frame_bot_mid.png",vec4(1,1,1,1),"left","top")) ] 7564 221:[ end ] >> 192:[ for i = 1, x_segs - 2 ] 7742 222:[ button:append(am.translate(x + ((x_segs - 1) * section_width), y - ((y_segs - 1) * section_height)) ^ am.sprite("data/any_frame_bot_right.png", vec4(1, 1, 1, 1), "left", "top")) ] >> 194:[ button\append(am.translate(x+((x_segs-1)*section_width),y - ((y_segs-1)*section_height))^ am.sprite("data/any_frame_bot_right.png",vec4(1,1,1,1),"left","top")) ] 7903 223:[ button:append(am.translate(x, y):tag("loc")) ] >> 195:[ button\append(am.translate(x,y)\tag("loc")) ] 7948 224:[ button("loc"):append(am.scale(2) ^ am.translate(16, -8) ^ am.text(ability.text, color.fg, "left", "top")) ] >> 196:[ button("loc")\append(am.scale(2)^ am.translate(16,-8)^ am.text(ability.text, color.fg, "left","top")) ] 8051 225:[ button("loc"):append(am.scale(1) ^ am.translate(16, -48) ^ am.text(ability.description, color.fg, "left", "top")) ] >> 197:[ button("loc")\append(am.scale(1)^ am.translate(16,-48)^ am.text(ability.description, color.fg, "left","top")) ] 8162 226:[ button("loc"):append(am.scale(1) ^ am.translate(16, -80) ^ am.text("Speed:" .. tostring(ability.speed), color.fg, "left", "top")) ] >> 198:[ button("loc")\append(am.scale(1)^ am.translate(16,-80)^ am.text("Speed:" .. tostring(ability.speed), color.fg, "left","top")) ] 8289 227:[ button("loc"):append(am.scale(1) ^ am.translate(16, -108) ^ am.text("Hits:", color.fg, "left", "center")) ] >> 199:[ button("loc")\append(am.scale(1)^ am.translate(16,-108)^ am.text("Hits:",color.fg,"left","center")) ] 8397 228:[ for i = 1, 8 do ] >> 200:[ for i = 1,8 ] 8404 229:[ button("loc"):append(am.translate(42 + (i * 24), -96) ^ am.sprite("data/pip_frame.png", color.white, "left", "top")) ] >> 201:[ button("loc")\append(am.translate(42 + (i*24), -96)^ am.sprite("data/pip_frame.png",color.white,"left","top")) ] 8519 230:[ if ability.hits_icon[i] == 1 then ] >> 202:[ if ability.hits_icon[i] == 1 ] 8549 231:[ button("loc"):append(am.translate(42 + (i * 24), -96) ^ am.sprite("data/pip_light.png", color.white, "left", "top")) ] >> 203:[ button("loc")\append(am.translate(42 + (i*24), -96)^ am.sprite("data/pip_light.png",color.white,"left","top")) ] 8517 232:[ end ] >> 202:[ if ability.hits_icon[i] == 1 ] 8390 233:[ end ] >> 200:[ for i = 1,8 ] 8662 234:[ node:append(button) ] >> 205:[ node\append(button) ] 8683 235:[ return button ] >> 206:[ button ] 6423 236:[ end ] >> 175:[ mod.build_infocard = (node, ability) -> ] 8693 237:[ mod.battle_log = function(text) ] >> 209:[ mod.battle_log = (text) -> ] 8721 238:[ local sx, sy = math.random(-100, 100), math.random(-40, 40) ] >> 210:[ sx, sy = math.random(-100,100), math.random(-40,40) ] 8774 239:[ local trans = am.translate(sx, sy) ] >> 211:[ trans = am.translate(sx,sy) ] 8803 240:[ trans:action(am.tween(3, { ] >> 212:[ trans\action(am.tween(3,{y:sy + 40})) ] 8830 241:[ y = sy + 40 ] >> 212:[ trans\action(am.tween(3,{y:sy + 40})) ] 8803 242:[ })) ] >> 212:[ trans\action(am.tween(3,{y:sy + 40})) ] 8842 243:[ local t = am.text(text, color.fg) ] >> 213:[ t = am.text(text, color.fg) ] 8871 244:[ t:action(am.tween(3, { ] >> 214:[ t\action(am.tween(3,{color:color.transparent})) ] 8898 245:[ color = color.transparent ] >> 214:[ t\action(am.tween(3,{color:color.transparent})) ] 8871 246:[ })) ] >> 214:[ t\action(am.tween(3,{color:color.transparent})) ] 8920 247:[ t:action(coroutine.create(function() ] >> 215:[ t\action(coroutine.create( () -> ] 8955 248:[ am.wait(am.delay(4)) ] >> 216:[ am.wait(am.delay(4)) ] 8978 249:[ return main.root("screen"):remove(trans) ] >> 217:[ main.root("screen")\remove(trans) ] 8920 250:[ end)) ] >> 215:[ t\action(coroutine.create( () -> ] 9017 251:[ return main.root("screen"):append(trans ^ t) ] >> 219:[ main.root("screen")\append(trans^ t) ] 8693 252:[ end ] >> 209:[ mod.battle_log = (text) -> ] 9055 253:[ return mod ] >> 221:[ mod ]