Video Tutorial - Beginners Guide To Coding An Illustrated Text Adventure Game
I very quickly put together a little video on how to create a simple text adventure game involving event hooks, command processors, locations, connections, objects and a block.
Full game available to play here : https://adventuron.itch.io/cave
Source (Non Graphic Version)
start_at = lakeside //loading_screen = loading_screen game_information { game_name = The Cave of Magic game_shortname = Magic Cave written_by = Chris Ainsley year = 2019 short_synopsis = Find the treasure game_version = 1.0.0 } locations { forest : location "You are on the forest path.\nTall <TREES<4>> tower over you on both sides." ; outside_cave : location "You are standing outside <THE CAVE OF MAGIC<5>>" ; inside_cave : location "You are inside <THE CAVE OF MAGIC<5>>" ; lakeside : location "You are by the side of a <BEAUTIFUL LAKE<2>>." ; } objects { troll : scenery "an enormous troll" start_at = "outside_cave" ; sleeping_troll : scenery "an enormous troll (sleeping)" ; apple : object "an apple" ; treasure : object "a pile of treasure" start_at = "inside_cave" ; } connections { from, direction, to = [ lakeside, north, forest, forest, north, outside_cave, outside_cave, north, inside_cave, ] } on_startup { // : print_graphic "outside_cave" ; : print "^c^THE MAGIC CAVE AWAITS YOU" ; : beep millis = "100" pitch = "0" ; : beep millis = "100" pitch = "2" ; : beep millis = "100" pitch = "4" ; : beep millis = "100" pitch = "6" ; : press_any_key ; : beep millis = "100" pitch = "6" ; : beep millis = "100" pitch = "4" ; : beep millis = "100" pitch = "2" ; : beep millis = "100" pitch = "0" ; } on_command { : match "pick apple;get apple" { : if (is_at "forest" && has_not_created "apple") { : create "apple" ; : redescribe; } } : match "examine trees" { : if (is_at "forest") { : print "Apple trees." ; } } : match "examine troll;talk troll" { : print "<\"I'm so hungry\"<3>>, says the enormous TROLL in the deepest possible voice." ; } : match "give apple" { : if (is_present "troll" && is_carried "apple") { : print "The troll grabs the apple from you hungrily. Unfortunately (for the troll), the apple is an <ENCHANTED APPLE<12>>, and sends the troll directly to sleep." ; : destroy "apple" ; : swap o1 = "troll" o2 = "sleeping_troll" ; : press_any_key ; : redescribe; } } : match "eat apple" { : if (is_present "apple") { : print "Unfortunately, the apple was an <ENCHANTED APPLE<12>>, and you will now go to sleep - forever." ; : print "^r^<GAME OVER<2>>" ; : end_game ; } } } ###################################### # On Describe # ###################################### on_describe { : if (is_present "troll") { : beep millis = "100" pitch = "-2" ; : beep millis = "100" pitch = "-4" ; : beep millis = "300" pitch = "-8" ; : print "The troll says, <\"THE CAVE IS MINE, GO AWAY\"<2>>." ; } } on_tick { : if (is_at "inside_cave" ) { : beep millis = "200" pitch = "0" ; : beep millis = "400" pitch = "10" ; : print "^r^CONGRATULATIONS !" ; : print "^r^YOU WON THE GAME !" ; : print "^r^YOUR RANKING IS : JUNIOR ADVENTURER !" ; : press_any_key ; : clear_screen; //: print_graphic "logo" ; : print "This tiny adventure was written using Adventuron." ; : print "Adventuron is a free text adventure creation language and development system." ; : print "Visit the website, and make a world of your own." ; : print "^r^<www.adventuron.io<12>>" ; : end_game ; } } barriers { block_cave : block { location = inside_cave message = THE TROLL IS GUARDING THE CAVE. block_when_exists = troll show_blocked_exit = true } }
Source (With Graphics Embedded as Base64 Text)
start_at = lakeside loading_screen = loading_screen game_information { game_name = The Cave of Magic game_shortname = Magic Cave written_by = Chris Ainsley year = 2019 short_synopsis = Find the treasure game_version = 1.0.0 } locations { forest : location "You are on the forest path.\nTall <TREES<4>> tower over you on both sides." ; outside_cave : location "You are standing outside <THE CAVE OF MAGIC<5>>" ; inside_cave : location "You are inside <THE CAVE OF MAGIC<5>>" ; lakeside : location "You are by the side of a <BEAUTIFUL LAKE<2>>." ; } objects { troll : scenery "an enormous troll" start_at = "outside_cave" ; sleeping_troll : scenery "an enormous troll (sleeping)" ; apple : object "an apple" ; treasure : object "a pile of treasure" start_at = "inside_cave" ; } connections { from, direction, to = [ lakeside, north, forest, forest, north, outside_cave, outside_cave, north, inside_cave, ] } on_startup { : print_graphic "outside_cave" ; : print "^c^THE MAGIC CAVE AWAITS YOU" ; : beep millis = "100" pitch = "0" ; : beep millis = "100" pitch = "2" ; : beep millis = "100" pitch = "4" ; : beep millis = "100" pitch = "6" ; : press_any_key ; : beep millis = "100" pitch = "6" ; : beep millis = "100" pitch = "4" ; : beep millis = "100" pitch = "2" ; : beep millis = "100" pitch = "0" ; } on_command { : match "pick apple;get apple" { : if (is_at "forest" && has_not_created "apple") { : create "apple" ; : redescribe; } } : match "examine trees" { : if (is_at "forest") { : print "Apple trees." ; } } : match "examine troll;talk troll" { : print "<\"I'm so hungry\"<3>>, says the enormous TROLL in the deepest possible voice." ; } : match "give apple" { : if (is_present "troll" && is_carried "apple") { : print "The troll grabs the apple from you hungrily. Unfortunately (for the troll), the apple is an <ENCHANTED APPLE<12>>, and sends the troll directly to sleep." ; : destroy "apple" ; : swap o1 = "troll" o2 = "sleeping_troll" ; : press_any_key ; : redescribe; } } : match "eat apple" { : if (is_present "apple") { : print "Unfortunately, the apple was an <ENCHANTED APPLE<12>>, and you will now go to sleep - forever." ; : print "^r^<GAME OVER<2>>" ; : end_game ; } } } ###################################### # On Describe # ###################################### on_describe { : if (is_present "troll") { : beep millis = "100" pitch = "-2" ; : beep millis = "100" pitch = "-4" ; : beep millis = "300" pitch = "-8" ; : print "The troll says, <\"THE CAVE IS MINE, GO AWAY\"<2>>." ; } } on_tick { : if (is_at "inside_cave" ) { : beep millis = "200" pitch = "0" ; : beep millis = "400" pitch = "10" ; : print "^r^CONGRATULATIONS !" ; : print "^r^YOU WON THE GAME !" ; : print "^r^YOUR RANKING IS : JUNIOR ADVENTURER !" ; : press_any_key ; : clear_screen; : print_graphic "logo" ; : print "This tiny adventure was written using Adventuron." ; : print "Adventuron is a free text adventure creation language and development system." ; : print "Visit the website, and make a world of your own." ; : print "^r^<www.adventuron.io<12>>" ; : end_game ; } } barriers { block_cave : block { location = inside_cave message = THE TROLL IS GUARDING THE CAVE. block_when_exists = troll show_blocked_exit = true } } ###################################### # Themes # ###################################### themes { my_theme : theme { settings { layout = H G D X O experimental_enable_crt = true } screen { paragraph_spacing_multiplier = 0.5 } } } assets { graphics { lakeside : base64_png "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoCAMAAAABrwJ6AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAADPAADPz///AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHGCbIwAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAABBElEQVRYR+3T0RKCIBCFYaje/5lb4FfEgBFZYKbxu2iK4OzRzLwWewo8BbYCH48PM6V3YEGNGz+BbsmmAn608g1a8hAeL2N2gZ97uOQOHKkX8JfY8KBkChARsNbs8un/+wlaPQWeAmMLhD9jwNJZQwGTYrVXNYdRZezrcc4gOeedYFFw8iZTvUyGFbFNENeO8zuSW3BSkHkVp4jpRJggvY69DgEqiBTMyWCDE874V02kC0buWHbYK/QLeMwRldne6bMVvO3GwIj1lPEzU3ylojbbMww94quxmGVzBRy2DcIQp1RgZAUGBPMLEL+ZXYDwqFiAA9pIj2Y/hMRH+QLs1kf+ztovLtcqnejM1JkAAAAASUVORK5CYII="; forest : base64_png "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoCAMAAAABrwJ6AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAAAAzwDPAM8AAP8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgbSMAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAAB3ElEQVRYR+2R0XaDMAxD2Vj//5fnyDeJYwKFbmMvvZwxsCSswvLmza/xWeD6gDOeI3bz2t9hmjjSnuPpnTzaCFqF6WsFyBaYDCAlqubnjsbXIOkwC2j8pXOkawkJVyBXYdpgDF6knLPYK0q5ALEGY2C4pYvx7ehawdMoZ8x/AaMJR6qiJyEygFRgMuFQPKiQZd1n0Loa37IT1Q3KzsHRPNxlUI93cGWM/Tw5B4sx3NcHtAe56jAKFNtUcDw2BYfI9wNyNxgaK/+LQ//6by9X3BHb4GplO+nIHmG+rmu93A8bpBKIlTjqv8NZlo+CYhUb2/7Vr14pgGaEF+VXGduvyNigrFcBxfy8h1wJpM58WnhaoII/gZhBDezNzxcgHb4g4wkY4tcelY7NTheI8a0WwRRBGSRGFwp4fk/r6PEJJJ7NtbhUoEoT7QGz/V1vBfx2ipllmrlCASaVsgPYCgwbxAMPHQMyTX6l4dJcAzYbM9sm7vvHBjK9XMAbyMkgsonb27PjVwuUBu7kPrKJ/8EbsAb2t2PL8bp/aCDTTwoUdmw57l8gfQOZ7irQjoBM9xTo+2MDmW4q0Pb/V4FwdGS6pUDcHxrIdE+BsP9/CgxHQ6Y7CsTt5ajIdKXAsnwDCusRZcRkfHUAAAAASUVORK5CYII="; outside_cave : base64_png "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoCAMAAAABrwJ6AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAAAAzwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEyzCWUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAAATElEQVRYR+3OsQ0AIAzEwLD/0jSpIEmFLCHZ5Td/YWZmn7bOcqe6/1hB9UYK6i9O0D1Rgv6HEUwvhGD+AAQCBAgQIECAAAECBDwGRGyT6ABKL7FnoAAAAABJRU5ErkJggg=="; inside_cave : base64_png "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoCAMAAAABrwJ6AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAAAAzwAA/wD/AP8AAP//AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOYrpxQAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAAB3klEQVRYR+WWy4LCIAxFO6PO/3+ykFwgQB5AdTVnYSskOSmW1kvjB0cBDykTX+FzDbyIPz68MBjzgQagHMBkyO0G4OuhdUBAwL0GyEb84ihATMCtBmCqcBcP+kwgyudGA9CAcveB3AXifM4bIM+gHUCky3EDcBBP8VkOGYS6nDYARQCCPc4ayMXrvdZtAPmbPL/UAMpPiLWvIMXBbkAHhRN0rSStayHhdUEWQ3VHrAb0aPPqxc/QP5KQZ2M0sOmvTIuBRBu9gcDv7/4epJqoDRh+BVgUEBCiNWD5UVqCGQUEhJ2oK2CAipsg2WK2mf6xgUe7F7RHQAHJFpNuwW/r2rOBQKLL6LP9GRRO9Ls9M26NGs6pFoPQ85daXLZD2/4422vAvX7UG7uY1yJF4IShBItO6fr7qvNIpQ6ndaHfhWMNpDPwKz6M14nuS4VGLYQ09OfayoInMD27CUzqNOuCvxjU929j631YtUv+/hrLhhf9tL2YJ/NESkGqTvEu+hNUXkF9POV4TrOAeN2fQfUIDqUMGzbv+RlYHIM7WSD1iV9AbTTkPYgIh+w+vf5yZMpjJ4MTigxI8sPr7xX0jSl3I2YCdv5/TZCHfRjZx/z/tUyyizcxBte57b/Jf/Jf1xueGxqz721j7wAAAABJRU5ErkJggg=="; loading_screen : base64_png "iVBORw0KGgoAAAANSUhEUgAAAIAAAABgCAIAAABaGO0eAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQ+SURBVHhe7ZddspswDEaziy6nr53p4rOFPt7nbiC1I1Bl+QeDLQnn6sw3rW0IhPNBaB+34bn97RjhBRjjBRjjBRjjBRjjBRjjBRjjBRjjBRjjBRjjBRjjBRjjBRjjBRjjBehRdO0FiBMUQ2DM8AIEQe+IF6ABeC+a9QJkqXlHvAApDtUDXsBkwHu/RC9gGqe8I17AHC5b8wLm4AUY4wUY4wUY4wUY4wUY4wUY4wUY4wUY4wUY88kFvF55AmwlxpAPKYAJvRArli+AeTyf5JnQZ9UCqLU8cXu22BN9liyAWTtM3scjndIos1gBTFYzJx4C2ocyKxWAjvacUHwqmixTAHNUTr5b8YNHR9NkjQKYIIWocfcCEilkzBJ3zBZL6djtfVI1blpAYmQkA4fSYW4Bo2EKsqT3byq38Xz0JB6Mr/CvV8kQlz/PPjj6PQLs+i8nV8lyuANGgSkF3Mh+IxceEQXGCxC133urykWawQIm2L8MMzUYK0YKmGOfiejPXNjBaUQZKWAO7GpvGFGueZxmP8Cutp39RVp/Nwg0KsoFlVr2J6tMO2seXJOzNmfapzAFLHF7ttiRc59C2HqIHKeEzrdfu0JcP5uRf+yzdRo5+p2K3PvsOjEMtpUlbs8WewKwxVqE6NQqYh9g11lMDtvhbBoHIc9Q0qsQPWYF7QP0OjtTg+2GYbCtPRHiUK64fWC/yIs/JpgabLcLEaLtV8k+wC445MIbtT/9ZYvSUKxqH2BXXk5lt462msbJYemh8IsJUbNsYB/Bix/N2KEQOp5OUbSlfQrVoRZKvjKd3PVd7OegozwTETpsDab7vvYPoeIOE3fPFll0oMbXuPcpdD0PeZc2dBc2aYLSF7j3+zWxPQup7KMPeF/APoVZy20uRFC/mP0cor7we0JzQ5a3vzRu3xK3b4nbt8TtW+L2LXH7lrh9S2baj//zLCVu+v0j5D2M0OnrL88x4VtjKF9fW3Z+/voTsk3S6fPxZIF1TSafElwH0HugXQCT3lUA9U7HqJ50UCuASTcpQPB8tACgXcAJqHEKkR7Zp+0CYNEE2XPXCmCJ6/sTgDmgXQBLxxOAgR10ED9ZowA6jYMe6ZR2AUhaAEinY33piMZZawVsk6wA7KCrD9oBjisFBNA72g+wG1+tD41zgH3WQa2AON47wBwD3iEALYCO3zD7AHaA2TaIIX6CO8Ps6/Ot7Zvj9i25kf3815a+MDAN4OUB7w/6IgHKb5FwNhoA3hM0BHxnjP9w4QntQfW0A2a8vwCabdOuPumASg/gFIyjelIA9T7YAT2zMVR6AKeHxhloHP/cBumN/3+KxotgATuDxhnLFIA5pF0ASwQLgAFOAeECbkS7gH7aBSCFAgA2/T4FBFA6DgKXCwDOFQBjmIJ3LIDUQDv4tD5APdoPjBSQjEkBdBxB73Ba+BPU0xDA+6fZdxxFHo9/8ttiddHMrZsAAAAASUVORK5CYII="; logo : base64_png "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"; } }
hello! the .zip content the images sources
ReplyDeleteI feel really happy to have seen your webpage and look forward to so many more entertaining times reading here. Thanks once more for all the details. 威而鋼官網
ReplyDelete