From ca977f3b1b5b1e6ed7c28b8fa0469d0b9442ab41 Mon Sep 17 00:00:00 2001 From: Antti Ollilainen <2697454+apa64@users.noreply.github.com> Date: Tue, 21 Jul 2020 21:30:57 +0300 Subject: [PATCH] started to convert topdown tutorial to OOP --- oop-topdown1.p8 | 509 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 509 insertions(+) create mode 100644 oop-topdown1.p8 diff --git a/oop-topdown1.p8 b/oop-topdown1.p8 new file mode 100644 index 0000000..0e26a7a --- /dev/null +++ b/oop-topdown1.p8 @@ -0,0 +1,509 @@ +pico-8 cartridge // http://www.pico-8.com +version 27 +__lua__ +-- top-down adventure game +-- by apa64 converted to oop from MBoffin's tutorial + +-- consts +b = { + left = 0, -- ⬅️ + right = 1, -- ➡️ + up = 2, -- ⬆️ + down = 3, -- ⬇️ + fire1 = 4, -- 🅾️ + fire2 = 5 -- ❎ +} +c = { + black = 0, + dark_blue = 1, + dark_purple = 2, + dark_green = 3, + brown = 4, + dark_gray = 5, + light_gray = 6, + white = 7, + red = 8, + orange = 9, + yellow = 10, + green = 11, + blue = 12, + indigo = 13, + pink = 14, + peach = 15 +} + +-- current player object +player1 = nil + +-- game loop + +function _init() + -- make player + player1 = player:new( + { + x = 3, + y = 2 + } + ) + map_setup() + text_setup() + game_win=false + game_over=false +end + +function _update() + if (not game_over) then + if (not active_text) then + update_map() + player1:move() + check_win_lose() + end + else + if (btnp(❎)) extcmd("reset") + end +end + +function _draw() + cls() + if (not game_over) then + draw_map() + player1:draw() + draw_text() + if (btn(❎)) show_inventory() + else + draw_win_lose() + end +end +-->8 +-- ###################### entity + +-- generic prototype object, kind of a class +_entity = {} + +-- the constructor creates a new object +-- params: o is an initializer table +-- https://www.lexaloffle.com/bbs/?pid=21527#p +-- inheritance: https://www.lua.org/pil/16.2.html +-- TODO: add to list while constructing: https://www.lexaloffle.com/bbs/?tid=3847 +function _entity:new(o) + local o = o or {} -- use initializer or create a new object if not provided + -- a table may have an associated table called metatable (mt). the fields of the metatable are used to look up if key is not in this table. + setmetatable(o, self) + -- __index indicates which table is accessed when a key is not found in this. in pixel:new() call self == pixel (prototype) + self.__index = self + return o +end + +-->8 +-- player code +-- player prototype +player = _entity:new( + { + sprite = 4, + x = 0, + y = 0, + keys = 0, + gold = 0 + } +) + +function player:draw() + spr(self.sprite, self.x*8, self.y*8) +end + +function player:move() + local newx=self.x + local newy=self.y + if (btnp(⬅️)) newx-=1 + if (btnp(➡️)) newx+=1 + if (btnp(⬆️)) newy-=1 + if (btnp(⬇️)) newy+=1 + + self:interact(newx,newy) + + if (can_move(newx,newy)) then + -- x and y always between 0,127 and 0,63 + self.x=mid(0,newx,127) + self.y=mid(0,newy,63) + else + sfx(0) + end +end + +function player:interact(x,y) + if (is_tile(text,x,y)) then + active_text=get_text(x,y) + end + + if(is_tile(key,x,y)) then + get_key(x,y) + elseif (is_tile(door,x,y) and player1.keys > 0) then + open_door(x,y) + elseif (is_tile(gold,x,y)) then + get_gold(x,y) + end +end + +-->8 +-- map code + +function map_setup() + -- timers + timer=0 + anim_time=30 -- 30=1 sec + + -- sprite number = type + -- not limited by flags + wall={3,17,18,19,35,37,38,56} + key={21} + gold={37} + door={53} + anim1={24} + anim2={25} + text={56} + lose={24} + win={8} +end + +function update_map() + if (timer<0) then + -- animate tiles every timer cycle + toggle_tiles() + timer=anim_time + end + timer -= 1 +end + +function draw_map() + -- calculate the map coord of the tile in left top of current map screen + -- increases in steps of 16: 0->16->32... + mapx=flr(player1.x/16)*16 + mapy=flr(player1.y/16)*16 + -- move camera to show the section of map we want on screen + camera(mapx*8, mapy*8) + map(0, 0, 0, 0, 128, 64) +end + +-- returns whether map tile in x.y is of given type +function is_tile(tile_type, x, y) + tile = mget(x,y) + for i=1,#tile_type do + if (tile==tile_type[i]) return true + end + return false +end + +function can_move(x,y) + return not is_tile(wall,x,y) +end + +-- swap map tile with next sprite +function swap_tile(x,y) + tile=mget(x,y) + mset(x,y,tile+1) +end + +-- animate to prev sprite +function unswap_tile(x,y) + tile=mget(x,y) + mset(x,y,tile-1) +end + +-- pick up key at location +function get_key(x,y) + player1.keys+=1 + swap_tile(x,y) + sfx(1) +end + +function open_door(x,y) + player1.keys-=1 + swap_tile(x,y) + sfx(2) +end + +function get_gold(x,y) + player1.gold+=5 + swap_tile(x,y) + sfx(1) +end + +-->8 +-- inventory code + +-- draw and print inv box +function show_inventory() + -- adapt to moving camera with mapx,mapy + invx=mapx*8+40 + invy=mapy*8+8 + + rectfill(invx,invy,invx+48,invy+30,0) + print("inventory",invx+7,invy+4,7) + print("keys "..player1.keys,invx+12,invy+14,9) + print("gold "..player1.gold,invx+12,invy+20,9) +end +-->8 +-- animation code + +function toggle_tiles() + -- toggle all visible map tiles + for x=mapx, mapx+15 do + for y=mapy, mapy+15 do + if (is_tile(anim1,x,y)) then + swap_tile(x,y) + sfx(3) + elseif (is_tile(anim2,x,y)) then + unswap_tile(x,y) + sfx(3) + end + end + end +end +-->8 +-- win/lose code + +function check_win_lose() + if (is_tile(win, player1.x, player1.y)) then + game_win=true + game_over=true + elseif (is_tile(lose, player1.x, player1.y)) then + game_win=false + game_over=true + end +end + +function draw_win_lose() + camera() + if (game_win) then + print("★ you win! ★", 37,64,7) + else + print("game over! :(",38,64,7) + end + print("press ❎ to play again", 20,72,5) +end + +-->8 +-- text code + +function text_setup() + -- texts map to all map tiles + -- map 0,0 = 1 2 3 4 5 6 7 + -- map 0,1 = 8 91011121314 + --... + -- texts[n] = x+y*map_width + texts={} + add_text(5,5,"first sign!") + add_text(12,5,"oh look!\na sign") +end + +function add_text(x,y,message) + texts[x+y*128] = message +end + +function get_text(x,y) + return texts[x+y*128] +end + +function draw_text() + if (active_text) then + textx=mapx*8+4 + texty=mapy*8+48 + rectfill(textx,texty,textx+119,texty+31,7) + print(active_text,textx+4,texty+4,1) + print("🅾️ to close",textx+4,texty+23,6) + end + if (btnp(🅾️)) active_text=nil +end + +__gfx__ +00000000333333333333333333333333000999000000000000000000000000006666666600000000000000000000000000000000000000000000000000000000 +0000000033333333333333b333111113009999900000000000000000000000006688886600000000000000000000000000000000000000000000000000000000 +007007003333333333333b3331565551009191900000000000000000000000006866668600000000000000000000000000000000000000000000000000000000 +000770003333333333333b3331555651009999900000000000000000000000006868868600000000000000000000000000000000000000000000000000000000 +00077000333333333b33333331555613009999900000000000000000000000006868868600000000000000000000000000000000000000000000000000000000 +00700700333333333bb3333331255513000aaa000000000000000000000000006866668600000000000000000000000000000000000000000000000000000000 +000000003333333333b3333333125513002222200000000000000000000000006688886600000000000000000000000000000000000000000000000000000000 +00000000333333333333333333311133004404400000000000000000000000006666666600000000000000000000000000000000000000000000000000000000 +00000000111111111111111111111111000000003333333333333333000000003333333333333333000000000000000000000000000000000000000000000000 +00000000111111111111111111115511000000009999333333333333000000003633363330333033000000000000000000000000000000000000000000000000 +00000000111111111c1cc11111555551000000009aa9333333333333000000000603060305030503000000000000000000000000000000000000000000000000 +00000000111111111111111115566551000000009339999933333333000000003033303330333033000000000000000000000000000000000000000000000000 +0000000011111111111c111115555551000000009339a9a933333333000000003333333333333333000000000000000000000000000000000000000000000000 +00000000111111111111c1c1c55556510000000099993a3a33333333000000003633363330333033000000000000000000000000000000000000000000000000 +0000000011111111111111111cc555cc00000000aaaa333333333333000000000603060305030503000000000000000000000000000000000000000000000000 +000000001111111111111111111ccc11000000003333333333333333000000003033303330333033000000000000000000000000000000000000000000000000 +00000000666666666666666666566656000000004a4444a44a4aa4a4000000000000000000000000000000000000000000000000000000000000000000000000 +00000000666666666666666655555555000000004a4444a415199151000000000000000000000000000000000000000000000000000000000000000000000000 +00000000666666666666665656665666000000004a4444a411111111000000000000000000000000000000000000000000000000000000000000000000000000 +0000000066666666656666665555555500000000aaa99aaa11111111000000000000000000000000000000000000000000000000000000000000000000000000 +00000000666666666666666666566656000000001919919115111151000000000000000000000000000000000000000000000000000000000000000000000000 +00000000666666666666566655555555000000004a4444a44a4444a4000000000000000000000000000000000000000000000000000000000000000000000000 +00000000666666666666666656665666000000004a4444a44a4444a4000000000000000000000000000000000000000000000000000000000000000000000000 +00000000666666666666666655555555000000004a4444a44a4444a4000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000005555555555555555000000004444444400000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000005544445555000055000000004f11fff100000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000005444444554000005000000004fff11f100000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000005114444554000005000000004ffffff100000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000005444444554000005000000004111111100000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000005444464551000005000000003334133300000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000005114444554000005000000003334100300000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000005444444554000005000000003333333300000000000000000000000000000000000000000000000000000000 +__label__ +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +333333333333333333333333333333333333333333333333333333333333333333333333333333b33333333333333333333333333333333333333333333333b3 +33333333333333333333333333333333333333333333333333333333333333333333333333333b33333333333333333333333333333333333333333333333b33 +33333333333333333333333333333333333333333333333333333333333333333333333333333b33333333333333333333333333333333333333333333333b33 +3333333333333333333333333333333333333333333333333333333333333333333333333b33333333333333333333333333333333333333333333333b333333 +3333333333333333333333333333333333333333333333333333333333333333333333333bb3333333333333333333333333333333333333333333333bb33333 +33333333333333333333333333333333333333333333333333333333333333333333333333b33333333333333333333333333333333333333333333333b33333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333111113333333333333333333333333333333333333333333333333333333339999333333333333333333333311111333333333 +33333333333333333333333331565551333333333333333333333333333333333333333333333333333333339aa9333333333333333333333156555133333333 +33333333333333333333333331555651333333333333333333333333333333333333333333333333333333339339999933333333333333333155565133333333 +33333333333333333333333331555613333333333333333333333333333333333333333333333333333333339339a9a933333333333333333155561333333333 +333333333333333333333333312555133333333333333333333333333333333333333333333333333333333399993a3a33333333333333333125551333333333 +3333333333333333333333333312551333333333333333333333333333333333333333333333333333333333aaaa333333333333333333333312551333333333 +33333333333333333333333333311133333333333333333333333333333333333333333333333333333333333333333333333333333333333331113333333333 +33333333333333333333333333333333333333333333333333333333333333333339993333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333399999333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333391919333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333399999333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333399999333333333333333333333333333333333333333333333333333333333 +3333333333333333333333333333333333333333333333333333333333333333333aaa3333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333322222333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333344344333333333333333333333333333333333333333333333333333333333 +3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334a4444a4 +3333333333333333333333333333333333333333333333333633363336333633363336333633363336333633363336333333333333333333333333334a4444a4 +3333333333333333333333333333333333333333333333330603060306030603060306030603060306030603060306033333333333333333333333334a4444a4 +333333333333333333333333333333333333333333333333303330333033303330333033303330333033303330333033333333333333333333333333aaa99aaa +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333319199191 +3333333333333333333333333333333333333333333333333633363336333633363336333633363336333633363336333333333333333333333333334a4444a4 +3333333333333333333333333333333333333333333333330603060306030603060306030603060306030603060306033333333333333333333333334a4444a4 +3333333333333333333333333333333333333333333333333033303330333033303330333033303330333033303330333333333333333333333333334a4444a4 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333336333633333333333333333333333333333333333633363333333333333333333333333333333333 +33333333333333333333333333333333333333333333333306030603333333333333333333333333333333330603060333333333333333333333333333333333 +33333333333333333333333333333333333333333333333330333033333333333333333333333333333333333033303333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333336333633333333333333333333333333333333333633363333333333333333333333333333333333 +33333333333333333333333333333333333333333333333306030603333333333333333333333333333333330603060333333333333333333333333333333333 +33333333333333333333333333333333333333333333333330333033333333333333333333333333333333333033303333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333336333633333333333333333333333333333333333633363333333333333333333333333333333333 +33333333333333333333333333333333333333333333333306030603333333333333333333333333333333330603060333333333333333333333333333333333 +33333333333333333333333333333333333333333333333330333033333333333333333333333333333333333033303333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333336333633333333333333333333333333333333333633363333333333333333333333333333333333 +33333333333333333333333333333333333333333333333306030603333333333333333333333333333333330603060333333333333333333333333333333333 +33333333333333333333333333333333333333333333333330333033333333333333333333333333333333333033303333333333333333333333333333333333 +11111111333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +11111111333333333333333333333333333333333333333336333633363336333033303330333033363336333633363333333333333333333333333333333333 +11111111333333333333333333333333333333333333333306030603060306030503050305030503060306030603060333333333333333333333333333333333 +11111111333333333333333333333333333333333333333330333033303330333033303330333033303330333033303333333333333333333333333333333333 +11111111333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 +11111111333333333333333333333333333333333333333336333633363336333033303330333033363336333633363333333333333333333333333333333333 +11111111333333333333333333333333333333333333333306030603060306030503050305030503060306030603060333333333333333333333333333333333 +11111111333333333333333333333333333333333333333330333033303330333033303330333033303330333033303333333333333333333333333333333333 +11111111111111113333333333333333333333333333333333333333111111116666666666666666111111111111111111111111111111111111111111111111 +11111111111111113333333333333333333333333333333333333333111111116666666666666666111111111111111111115511111111111111111111111111 +11111111111111113333333333333333333333333333333333333333111111116666665666666656111111111111111111555551111111111111111111111111 +11111111111111113333333333333333333333333333333333333333111111116566666665666666111111111111111115566551111111111111111111111111 +11111111111111113333333333333333333333333333333333333333111111116666666666666666111111111111111115555551111111111111111111111111 +111111111111111133333333333333333333333333333333333333331111111166665666666656661111111111111111c5555651111111111111111111111111 +1111111111111111333333333333333333333333333333333333333311111111666666666666666611111111111111111cc555cc111111111111111111111111 +111111111111111133333333333333333333333333333333333333331111111166666666666666661111111111111111111ccc11111111111111111111111111 +11111111111111111111111111111111111111113333333333333333111111116666666666666666111111111111111111111111111111111111111111111111 +11111111111111111111111111111111111111113333333333333333111111116666666666666666111111111111111111111111111111111111111111111111 +11111111111111111111111111111111111111113333333333333333111111116666665666666656111111111111111111111111111111111111111111111111 +11111111111111111111111111111111111111113333333333333333111111116566666665666666111111111111111111111111111111111111111111111111 +11111111111111111111111111111111111111113333333333333333111111116666666666666666111111111111111111111111111111111111111111111111 +11111111111111111111111111111111111111113333333333333333111111116666566666665666111111111111111111111111111111111111111111111111 +11111111111111111111111111111111111111113333333333333333111111116666666666666666111111111111111111111111111111111111111111111111 +11111111111111111111111111111111111111113333333333333333111111116666666666666666111111111111111111111111111111111111111111111111 +11111111111111111111111111111111111111111111111111111111111111116666666666666666665666566656665666566656665666566656665666566656 +11111111111111111111551111111111111111111111111111115511111111116666666666666666555555555555555555555555555555555555555555555555 +11111111111111111155555111111111111111111111111111555551111111116666665666666656566656665666566656665666566656665666566656665666 +11111111111111111556655111111111111111111111111115566551111111116566666665666666555555555555555555555555555555555555555555555555 +11111111111111111555555111111111111111111111111115555551111111116666666666666666665666566656665666566656665666566656665666566656 +1111111111111111c5555651111111111111111111111111c5555651111111116666566666665666555555555555555555555555555555555555555555555555 +11111111111111111cc555cc1111111111111111111111111cc555cc111111116666666666666666566656665666566656665666566656665666566656665666 +1111111111111111111ccc11111111111111111111111111111ccc11111111116666666666666666555555555555555555555555555555555555555555555555 +33333333333333333333333333333333111111111111111111111111111111116666666666666666665666566666666666666666666666666666666666566656 +33333333333333333333333333333333111111111111111111111111111111116666666666666666555555556666666666666666666666666688886655555555 +333333333333333333333333333333331c1cc11111111111111111111c1cc1116666665666666656566656666666666666666666666666666866668656665666 +33333333333333333333333333333333111111111111111111111111111111116566666665666666555555556666666666666666666666666868868655555555 +33333333333333333333333333333333111c11111111111111111111111c11116666666666666666665666566666666666666666666666666868868666566656 +333333333333333333333333333333331111c1c111111111111111111111c1c16666566666665666555555556666666666666666666666666866668655555555 +33333333333333333333333333333333111111111111111111111111111111116666666666666666566656666666666666666666666666666688886656665666 +33333333333333333333333333333333111111111111111111111111111111116666666666666666555555556666666666666666666666666666666655555555 +33333333333333333333333333333333333333333333333333333333333333336666666666666666555555556666666666666666666666666666666666566656 +33333333333333333333333333333333333333333333333333333333333333336666666666666666554444556666666666666666666666666666666655555555 +33333333333333333333333333333333333333333333333333333333333333336666665666666656544444456666666666666666666666666666666656665666 +33333333333333333333333333333333333333333333333333333333333333336566666665666666511444456666666666666666666666666666666655555555 +33333333333333333333333333333333333333333333333333333333333333336666666666666666544444456666666666666666666666666666666666566656 +33333333333333333333333333333333333333333333333333333333333333336666566666665666544446456666666666666666666666666666666655555555 +33333333333333333333333333333333333333333333333333333333333333336666666666666666511444456666666666666666666666666666666656665666 +33333333333333333333333333333333333333333333333333333333333333336666666666666666544444456666666666666666666666666666666655555555 +33333333333333333333333333333333333333333333333333333333333333333333333333333333665666566656665666566656665666566656665666566656 +33333333333333333333333333333333331111133333333333333333333333333333333333333333555555555555555555555555555555555555555555555555 +33333333333333333333333333333333315655513333333333333333333333333333333333333333566656665666566656665666566656665666566656665666 +33333333333333333333333333333333315556513333333333333333333333333333333333333333555555555555555555555555555555555555555555555555 +33333333333333333333333333333333315556133333333333333333333333333333333333333333665666566656665666566656665666566656665666566656 +33333333333333333333333333333333312555133333333333333333333333333333333333333333555555555555555555555555555555555555555555555555 +33333333333333333333333333333333331255133333333333333333333333333333333333333333566656665666566656665666566656665666566656665666 +33333333333333333333333333333333333111333333333333333333333333333333333333333333555555555555555555555555555555555555555555555555 + +__gff__ +0000000100000000800000000000000000010101000200004810000000000000000000010003010000000000000000000000000000050000210000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +__map__ +0101010101010101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0101010101010101010101010101010101010101020202010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0101010101010101010101010101010101010102010101030101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0101010101010101010201010101010201010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0101010301010101010101150101030101010102010101010101010201010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0101010101380101010101013801010101010101010301010101010101011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0101010101011818181818180101012501010101010101010101010101011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0101010101011801010101180101010102010101010101010101010111111101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0101010101011801010101180101010101010101010101010101011111121100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1101010101011818191918180101010101010101010101010111111311111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1111010101010111222211111311111111110101010111111111111211010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1111111111010111222211111111111111111112111111121311111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1111131111111311222223232323232311131111131111111101010101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0101010112111112222223212121082312111111111111010101010101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0101010101010101222235212121212311111111111101010101010101020100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0101010103010101010123232323232301010101010102010101010103010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0101010101010201020101010101010101010101010101010101010103010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +__sfx__ +000400000d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000600001b05023050230502305023050230302302023010240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000600001605017050220502d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000300000b6200f620180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000