LevelData = {} LevelData.__index = LevelData function LevelData.new() local self = { { --floor 1 walls = { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {0,1,0,0,1,1,1,0,1,1,1,0,0,1,0}, {1,1,1,0,2,0,2,0,2,0,2,0,1,1,1}, {2,2,1,0,0,0,0,0,0,0,0,0,1,2,2}, {0,0,0,0,1,0,2,1,2,0,1,0,0,0,0}, {2,2,1,0,0,0,0,0,0,0,0,0,1,2,2}, {1,1,1,0,2,0,2,0,2,0,2,0,1,1,1}, {0,1,0,0,1,1,1,0,1,1,1,0,0,1,0}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, }, entities = { {type = "enemy", x = 3, y = 8, value_str="2"}, {type = "enemy", x = 3, y = 5, value_str="2"}, {type = "enemy", x = 3, y = 11, value_str="2"}, {type = "enemy", x = 6, y = 6, value_str="5"}, {type = "enemy", x = 6, y = 10, value_str="5"}, {type = "enemy", x = 10, y = 6, value_str="5"}, {type = "enemy", x = 10, y = 10, value_str="5"}, {type = "enemy", x = 8, y = 5, value_str="10"}, {type = "enemy", x = 8, y = 11, value_str="10"}, {type = "enemy", x = 8, y = 7, value_str="25"}, {type = "enemy", x = 8, y = 9, value_str="25"}, {type = "enemy", x = 5, y = 7, value_str="10"}, {type = "enemy", x = 5, y = 9, value_str="10"}, {type = "enemy", x = 11, y = 7, value_str="60"}, {type = "enemy", x = 11, y = 9, value_str="60"}, {type = "enemy", x = 13, y = 5, value_str="2"}, {type = "enemy", x = 13, y = 11, value_str="2"}, {type = "enemy", x = 13, y = 8, value_str="100"}, {type = "enemy", x = 14, y = 8, value_str="250"}, -- TODO: decide on the value of these bonus enemies {type = "enemy", x = 1, y = 5, value_str="1k"}, {type = "enemy", x = 1, y = 11, value_str="1k"}, {type = "enemy", x = 15, y = 5, value_str="1k"}, {type = "enemy", x = 15, y = 11, value_str="1k"}, {type = "stairs_up", x = 15, y = 8}, }, textboxes = { { x = 8, y = 8, w = 232, h = 40, str = "Welcome to the Tower of Scale! Use arrow keys to move. WASD, vikeys and numpad will also work.", }, { x = 8, y = 200, w = 232, h = 40, str = "You can defeat enemies with lower power by moving into them. If you do this, you absorb their power and add it to yours.", }, } }, { --floor 2 walls = { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {0,0,0,0,0,0,2,0,0,1,0,0,0,0,0}, {0,0,2,0,0,0,2,2,2,2,0,1,1,1,0}, {2,2,2,0,1,1,0,2,0,0,0,0,0,2,0}, {0,2,0,0,2,1,0,0,0,1,2,0,0,2,0}, {0,2,0,0,0,0,0,2,0,1,1,0,2,2,2}, {0,1,1,1,0,2,2,2,2,0,0,0,2,0,0}, {0,0,0,0,0,1,0,0,2,0,0,0,0,0,0}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, }, entities = { {type = "enemy", x = 10, y = 7, value_str="250"}, {type = "enemy", x = 6, y = 9, value_str="250"}, {type = "enemy", x = 1, y = 5, value_str="30"}, {type = "enemy", x = 2, y = 5, value_str="25"}, {type = "enemy", x = 1, y = 6, value_str="25"}, {type = "enemy", x = 2, y = 6, value_str="25"}, {type = "enemy", x = 5, y = 5, value_str="15"}, {type = "enemy", x = 6, y = 5, value_str="15"}, {type = "enemy", x = 5, y = 6, value_str="15"}, {type = "enemy", x = 6, y = 6, value_str="15"}, {type = "enemy", x = 14, y = 11, value_str="25"}, {type = "enemy", x = 15, y = 11, value_str="30"}, {type = "enemy", x = 14, y = 10, value_str="25"}, {type = "enemy", x = 15, y = 10, value_str="25"}, {type = "enemy", x = 10, y = 11, value_str="15"}, {type = "enemy", x = 11, y = 11, value_str="15"}, {type = "enemy", x = 10, y = 10, value_str="15"}, {type = "enemy", x = 11, y = 10, value_str="15"}, {type = "enemy", x = 3, y = 8, value_str="7"}, {type = "enemy", x = 3, y = 9, value_str="7"}, {type = "enemy", x = 13, y = 8, value_str="7"}, {type = "enemy", x = 13, y = 7, value_str="7"}, {type = "enemy", x = 8, y = 11, value_str="250"}, {type = "enemy", x = 8, y = 5, value_str="250"}, {type = "gate", x = 15, y = 7}, {type = "gate", x = 1, y = 9}, {type = "gate", x = 8, y = 8}, {type = "gate", x = 9, y = 5}, {type = "gate", x = 7, y = 11}, {type = "gate", x = 3, y = 5}, {type = "gate", x = 13, y = 11}, {type = "stairs_down", x = 15, y = 8}, {type = "stairs_up", x = 1, y = 8}, }, textboxes = { { x = 8, y = 8, w = 232, h = 40, str = "Division Gates will divide your power by two. Try to open them while your power is low, to reduce your losses.", }, { x = 8, y = 205, w = 232, h = 30, str = "Whenever you feel like you've made a mistake, don't be afraid to undo by pressing the Z key.", }, } }, { --floor 3 walls = { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,2,2,2,1,1,1,1,1,2,2,2,1,1}, {2,2,2,0,2,2,2,1,2,2,2,0,2,2,2}, {0,0,0,0,0,0,2,2,2,0,0,0,1,2,0}, {0,1,0,2,2,0,0,1,0,0,0,2,1,2,0}, {1,1,0,0,0,0,0,0,0,1,0,0,0,1,1}, {0,0,0,2,2,0,0,1,0,0,0,2,1,2,2}, {0,0,0,0,0,0,2,2,2,0,0,0,1,0,0}, {2,2,2,2,2,2,2,1,2,2,2,2,2,2,2}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, }, entities = { {type = "enemy", x = 15, y = 8, value_str="25G"}, {type = "enemy", x = 8, y = 9, value_str="3k"}, {type = "enemy", x = 1, y = 10, value_str="100"}, {type = "enemy", x = 2, y = 10, value_str="100"}, {type = "enemy", x = 2, y = 11, value_str="250"}, {type = "enemy", x = 4, y = 9, value_str="10"}, {type = "enemy", x = 5, y = 9, value_str="10"}, {type = "enemy", x = 4, y = 11, value_str="10"}, {type = "enemy", x = 5, y = 11, value_str="10"}, {type = "enemy", x = 10, y = 8, value_str="500"}, {type = "enemy", x = 10, y = 10, value_str="500"}, {type = "pickaxe", x = 4, y = 6}, {type = "pickaxe", x = 14, y = 11}, {type = "pickaxe", x = 15, y = 11}, {type = "pickaxe", x = 13, y = 9}, {type = "pickaxe", x = 1, y = 11}, {type = "vorpal", x = 12, y = 6}, {type = "stairs_down", x = 1, y = 8}, {type = "stairs_up", x = 15, y = 7}, }, textboxes = { { x = 9, y = 7, w = 111, h = 58, str = "You can use a pickaxe to destroy a single non-reinforced wall.", }, { x = 128, y = 7, w = 111, h = 58, str = "You can use a vorpal blade to kill any enemy once, but you won't absorb their power.", }, { x = 8, y = 205, w = 232, h = 30, str = "Be aware that you can only hold a single pickaxe or a single vorpal blade.", }, } }, { --floor 4 walls = { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {2,0,2,2,1,1,1,1,1,1,1,2,2,0,2}, {0,0,2,2,0,0,0,0,0,0,0,2,2,0,0}, {0,0,0,0,0,2,0,2,0,2,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {1,1,0,0,2,2,2,0,2,2,2,0,0,1,1}, {0,0,0,0,2,0,0,0,0,0,2,0,0,0,0}, {1,1,0,0,0,0,1,1,1,0,0,0,0,1,1}, {0,0,0,0,2,0,1,0,1,0,2,0,0,0,0}, }, entities = { {type = "enemy_neg", x = 13, y = 7, value_str = "5k"}, {type = "enemy_neg", x = 3, y = 7, value_str = "5k"}, {type = "enemy_neg", x = 2, y = 8, value_str = "1k"}, {type = "enemy_neg", x = 14, y = 8, value_str = "1k"}, {type = "enemy_neg", x = 5, y = 9, value_str = "1k"}, {type = "enemy", x = 6, y = 9, value_str = "500"}, {type = "enemy_neg", x = 7, y = 9, value_str = "1k"}, {type = "enemy", x = 8, y = 9, value_str = "500"}, {type = "enemy_neg", x = 9, y = 9, value_str = "1k"}, {type = "enemy", x = 10, y = 9, value_str = "500"}, {type = "enemy_neg", x = 11, y = 9, value_str = "1k"}, {type = "enemy", x = 1, y = 15, value_str = "500"}, {type = "enemy_neg", x = 2, y = 15, value_str = "500"}, {type = "enemy", x = 15, y = 15, value_str = "500"}, {type = "enemy_neg", x = 14, y = 15, value_str = "500"}, {type = "enemy", x = 1, y = 13, value_str = "250"}, {type = "enemy_neg", x = 2, y = 13, value_str = "250"}, {type = "enemy", x = 15, y = 13, value_str = "250"}, {type = "enemy_neg", x = 14, y = 13, value_str = "250"}, {type = "enemy", x = 6, y = 15, value_str = "50"}, {type = "enemy", x = 6, y = 14, value_str = "50"}, {type = "enemy", x = 6, y = 13, value_str = "50"}, {type = "enemy", x = 7, y = 13, value_str = "50"}, {type = "enemy", x = 8, y = 13, value_str = "50"}, {type = "enemy", x = 9, y = 13, value_str = "50"}, {type = "enemy", x = 10, y = 13, value_str = "50"}, {type = "enemy", x = 10, y = 14, value_str = "50"}, {type = "enemy", x = 10, y = 15, value_str = "50"}, {type = "enemy_neg", x = 8, y = 11, value_str = "1k"}, {type = "gate", x = 5, y = 14}, {type = "gate", x = 11, y = 14}, {type = "gate", x = 8, y = 12}, {type = "enemy", x = 8, y = 15, value_str = "3k"}, {type = "pickaxe", x = 6, y = 7}, {type = "pickaxe", x = 7, y = 7}, {type = "vorpal", x = 8, y = 7}, {type = "pickaxe", x = 9, y = 7}, {type = "pickaxe", x = 10, y = 7}, {type = "stairs_up", x = 1, y = 7}, {type = "stairs_down", x = 15, y = 7}, }, textboxes = { { x = 8, y = 15, w = 232, h = 57, str = "Negative enemies work the same as normal enemies, with one difference - when you absorb their power, you substract their power from yours instead of adding it.", }, } }, { --floor 5 walls = { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {1,1,1,2,2,2,2,2,2,2,2,2,2,2,2}, {1,1,1,2,1,1,1,1,1,1,1,1,1,1,1}, {1,0,1,2,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,2,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,2,1,1,1,1,1,1,1,1,1,1,1}, }, entities = { {type = "elixir", x = 2, y = 13}, {type = "stairs_down", x = 1, y = 7}, {type = "stairs_up", x = 15, y = 7}, }, textboxes = { { x = 72, y = 188, w = 168, h = 49, str = "Elixirs will double your power. Try to save them until your power is high to maximize the gains.", }, } }, } --convert value_str into value for f=1,#self do local entities = self[f].entities for e=1,#entities do if entities[e].value_str then arr = {} num = 0 for i=1,#entities[e].value_str do arr[i] = entities[e].value_str:sub(i,i) end for i=1,#arr do if arr[i]=="G" then num = num * 1000 * 1000 * 1000 elseif arr[i]=="M" then num = num * 1000 * 1000 elseif arr[i]=="k" then num = num * 1000 else num = num*10+arr[i] end end -- print("converted value_str "..entities[e].value_str.." into value "..num) entities[e].value = num end end end setmetatable(self, LevelData) return self end return LevelData