diff --git a/README.md b/README.md index 1a0f04ad..aa75f7ee 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,10 @@ Preface: This only supports Visual Studio on Windows and Xcode on macOS. Ubuntu With Python 3 and pip installed, install Conan via `pip3 install conan`. Afterwards, add the necessary package repositories by adding running the following commands: ```sh -conan remote add eliza "https://api.bintray.com/conan/eliza/conan" -conan remote add bincrafters "https://api.bintray.com/conan/bincrafters/public-conan" +conan remote add eliza https://rkevin.jfrog.io/artifactory/api/conan/eliza +conan remote add bincrafters https://bincrafters.jfrog.io/artifactory/api/conan/public-conan +conan config set general.revisions_enabled=1 +setx CONAN_USE_ALWAYS_SHORT_PATHS 1 (windows only) ``` Prepare to build *OneShot* by installing the necessary dependencies with Conan. diff --git a/conanfile.py b/conanfile.py index 53ea5f92..c23bd39d 100644 --- a/conanfile.py +++ b/conanfile.py @@ -40,9 +40,9 @@ class MkxpConan(ConanFile): "cygwin_installer:with_pear=False", ) - def build_requirements(self): - if tools.os_info.is_windows: - self.build_requires("cygwin_installer/2.9.0@bincrafters/stable") + #def build_requirements(self): + # if tools.os_info.is_windows: + # self.build_requires("cygwin_installer/2.9.0@bincrafters/stable") def requirements(self): if self.options.platform == "steam": @@ -58,28 +58,29 @@ def requirements(self): def configure(self): if tools.os_info.is_windows: # ??? - self.options.openal.shared = True + self.options["openal"].shared = True # Fix linker error in SDL_sound fork with SDL2 - self.options.sdl2.shared = True + self.options["sdl2"].shared = True def build_configure(self): - cmake = CMake(self) + cmake = CMake(self, msbuild_verbosity='minimal') if self.options.platform == "steam": cmake.definitions["STEAM"] = "ON" cmake.configure() cmake.build() def build(self): - if tools.os_info.is_windows: - cygwin_bin = self.deps_env_info["cygwin_installer"].CYGWIN_BIN - with tools.environment_append({ - "PATH": [cygwin_bin], - "CONAN_BASH_PATH": - os.path.join(cygwin_bin, "bash.exe") - }): - self.build_configure() - else: - self.build_configure() + #if tools.os_info.is_windows: + # cygwin_bin = self.deps_env_info["cygwin_installer"].CYGWIN_BIN + # with tools.environment_append({ + # "PATH": [cygwin_bin], + # "CONAN_BASH_PATH": + # os.path.join(cygwin_bin, "bash.exe") + # }): + # self.build_configure() + #else: + # self.build_configure() + self.build_configure() def package(self): self.copy("*", dst="bin", src="bin") @@ -106,4 +107,4 @@ def do_copy_deps(self, copy): root_package=dep, keep_path=True) if self.settings.build_type == "Debug": - copy("*.pdb", dst="bin", root_package=dep, keep_path=False) + copy("*.pdb", dst="bin", root_package=dep, keep_path=False) \ No newline at end of file diff --git a/journal/w32/journal/journal.vcxproj b/journal/w32/journal/journal.vcxproj index e8d7617e..ed168eb1 100644 --- a/journal/w32/journal/journal.vcxproj +++ b/journal/w32/journal/journal.vcxproj @@ -115,7 +115,7 @@ true - Console + Windows true true true @@ -143,7 +143,7 @@ true - Console + Windows true true true diff --git a/journal/w32/journal/src/journal.c b/journal/w32/journal/src/journal.c index 45b9af6d..8c06972d 100644 --- a/journal/w32/journal/src/journal.c +++ b/journal/w32/journal/src/journal.c @@ -161,13 +161,13 @@ DWORD WINAPI ipc_thread(LPVOID lpParam) void init_check_save(WCHAR* save_path) { FILE* savefile = _wfopen(save_path, L"rb"); char imgfile[16] = {0}; - char langbuf[9] = {0}; + char langbuf[17] = {0}; char* openbrace = 0; char* closebrace = 0; if (savefile) { strcpy(imgfile, "save"); - fseek(savefile, -8, SEEK_END); - fread(langbuf, 1, 8, savefile); + fseek(savefile, -16, SEEK_END); + fread(langbuf, 1, 16, savefile); fclose(savefile); openbrace = strchr(langbuf, '['); diff --git a/scripts/Game_Oneshot.rb b/scripts/Game_Oneshot.rb index 6236f438..3d757655 100644 --- a/scripts/Game_Oneshot.rb +++ b/scripts/Game_Oneshot.rb @@ -42,23 +42,18 @@ def self.set_persistent(name, color) end Graphics.update end - - if (name == 'save_w32') - case $persistent.langcode - when 'fr' - name = $persistent.langcode + "/" + name - when 'pt_BR' - name = $persistent.langcode + "/" + name - when 'es' - name = $persistent.langcode + "/" + name - when 'ja' - name = $persistent.langcode + "/" + name - when 'ko' - name = $persistent.langcode + "/" + name - when 'zh_CN' - name = $persistent.langcode + "/" + name - end + + locWallpaper = $persistent.langcode + "/" + name + if (name == 'save_w32') + locWallpaperFullPath = "Wallpaper/" + locWallpaper + ".bmp" + else + locWallpaperFullPath = "Wallpaper/" + locWallpaper + ".png" + end + + if File.exists?(locWallpaperFullPath) + name = locWallpaper end + $game_oneshot.wallpaper = name $game_oneshot.wallpaper_color = color Wallpaper.set(name, color) diff --git a/scripts/Game_Party.rb b/scripts/Game_Party.rb index fc38a830..9d30b635 100644 --- a/scripts/Game_Party.rb +++ b/scripts/Game_Party.rb @@ -131,15 +131,17 @@ def remove_actor(actor_id) actor = $game_actors[actor_id] # Delete follower unless $game_followers.empty? - follower = $game_followers.pop - $scene.remove_follower(follower) - new_actor = follower.actor - if new_actor != actor - $game_followers.reverse_each do |follower| - new_actor, follower.actor = follower.actor, new_actor - break if new_actor == actor + for i in 0...$game_followers.size + follower = $game_followers[i] + if follower.actor.id == actor.id + if $game_followers.size > i + 1 + $game_followers[i + 1].leader = follower.leader + end + $game_followers.delete_at(i) + $scene.remove_follower(follower) + break end - end + end end # Delete actor @actors.delete(actor) diff --git a/scripts/Game_Temp.rb b/scripts/Game_Temp.rb index 336095d3..4ee02ee2 100644 --- a/scripts/Game_Temp.rb +++ b/scripts/Game_Temp.rb @@ -66,6 +66,7 @@ class Game_Temp attr_accessor :prompt_wait # wait for delay caused by prompt attr_accessor :menus_visible attr_accessor :countdown_password + attr_accessor :igt_timer_visible #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- @@ -123,8 +124,9 @@ def initialize @footstep_sfx = nil @filmsprite = nil @prompt_wait = 0 - @menus_visible = false - @countdown_password = "" + @menus_visible = false + @countdown_password = "" + @igt_timer_visible = false end def bgm_fadein(game_system) diff --git a/scripts/Puzzle_Safe.rb b/scripts/Puzzle_Safe.rb index 9b6c5961..64149dd2 100644 --- a/scripts/Puzzle_Safe.rb +++ b/scripts/Puzzle_Safe.rb @@ -1,128 +1,13 @@ -DOCUMENT_TEXT = \ -"Dear ̷̡̠͇̼͉̻̦͓́͜͡ ̶̤̦̯͖͚͓̮͓̣̤̰͇́̕ ̴͜͏͈̭̦͙̦̯̟̗̜̼̠̦͘ ̶̶̡̢̲̱̜̹̰̻̘̪̳̫͕̙̕ ̡҉͎̦̙̰̻͉̜̝̺͚̻͇̞̺̦͓́ ̨̘̤̜̞͍̩̠̱̦̫͔̹̩͍͇̜͈́̕͞ͅͅ ̴̴̧̣͍̘̰̗̮̜̰̲̣̙̲̝͚̩̦̭̀͡ ̧̗͚̱͓̥̖͍͕̀ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀ ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎́̀\n\n\n" + \ -\ -\ -"Ţ̵̧̀ ̵͟͡ ̨҉͟͞h̡͜͠҉ ̷̛i̵̶̷͝ ̵̀͢͢s͜ ͟͏̷̵̡ ̨͟͡ ͏ ̷i҉̷̧̀ ̴̡̕s͠ ͟҉̞̭̼̞̯̰͈̘̟̣̜̰͖͙̼͙̙ ̨̳͚͍̤̦̪͔̲̬̻̯͍͉̥̦̱́ͅ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀T ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎̮͍̥̲̟͓̹̞̤̠͉̳̝̫́̀ͅ ̛̫͎̤̥̰̩̹̬͞ ͟҉̞̭̼̞̯̰͈̘̟̣̜̰͖͙̼͙̙A ̨̳͚͍̤̦̪͔̲̬̻̯͍͉̥́ͅu̦̱ ̵̸̹̼̞͚̹̟̺͎̜̖̦͠ ̴̢̳͔̻͕̮͇̱̀͡ͅͅ ̘̟̺̫̪̺͙̦̳̻͙̣̳́́͝͝ ̤͍͍̭͙̦̤͖͕̯͍̜́͜ͅr ̷̶̥̠͍͚͜͞ \n\n" + \ -\ -".̴͜/͞m̵̧.̧̨̧́͘.̶͘͝͡-̡̢͟-̷̧͠͝͝-̴̨͜͢y͡҉̧/̀͏͏͘.͜͞.҉̡̀͢-̡̧̕͜-̸͘͜f̷̧͘͜.̨́͜.͞͞.̴̶͞ message to you, and I'm afraid I must make it brief.\n" + \ -"I have left you a journal, part of which is written in a language that y̴̴͝/͟͝͝/̧͝͡-҉̵̸͡-͏͡o͏͜͝/̶̡̡/͡/͏̵̵̵̀/͏́́ų̨̕͘ ͟҉̴ ̧͠͏͝ ͘̕͟͠͞w̛͘͟͡͠/̵̢͠/̷́͞͞/҉̸̛̀͡ļ̴̕͢͡l̢̛̕͘͜ ̵̀͝͠n͝o̵͢͠=̵̷̨̡͡.̷̴̷̡̡.̷̵͘͟t̶̶̸̡ ̷́͜u͏̴́/̀/̵̧͢͞͡ǹd̀͟͠è͢҉̢̢-͠҉-̧҉̢-̶̧-̷̶͘s̵̶̷̢͠t̡̛a̧ ̶̴̧͝ ̷̸̡ ̸́͞ ͢ ̶̸̡̛͞n̢͠d̸̵ ҉̢͠͠a̴͡͠t̛͏̀͟͠ ̨̢͢͝f̷̵/̵̢̡̢/̧̢҉̵/̨͟͝r͏-̕͟͟͠=̢̕͘͟s̵͟͏t͞͞͡\n\n" + \ -\ -"H҉.̧̕.̸̵.̸̨̛̕͠-͘͜/̵͏҉/̸͘̕w̴͏͟e̷̢͜v̵͟͜͟(̢̕҉͟ę̸̀͜͞r̶̷͠͠҉ ̵̡͡ ̵̕͡͠ ҉̷ ̴̵̛͢,̧́҉ ͘͠͞ ͞͠ǫ̷̵̛̀n҉̡͡/̶̢/̵̸҉/̴̸̢́/̡͞/̀͘̕͢/̨͟c̵̷ ̨̛͘͡͞ ̨͏̛ ̷̶̡̧͜ ̵̨̀͜e̸̢͢͟ ̴͝y҉̸̛́/̵̵̶̨/̢͘/̴͟/͡=͢͏=̡͘=̷̢=҉̴̢/̸̧̧͞/̛̕/̶̨́͠/̶̨̧̕͜.̵.̴͝.̷̶͡u̧͝ ͘͘͜҉.̢̨̕͝͏ ̸̶̵̶̢ ̶̡ ̧̀c̀͢͞͞.͡.̴̶́͟͠.͞͏͘.̨̧͘͞.̴҉͞.̶ą̶͟͞n̕ r ̧͠ ead it and you will know what to do.\n\n" + \ -\ -"I have also ĺ̶̴͍̖̙͈̘͚͓̞͠é͕͔̤͚̺̲̱̫͢͜͠f̦̖͕̞͚̟͞t͟͜͏҉̖͚̺̲̞̳̹̠̥̙̳̳͙̦̣͞ ̗̜̠̰̼̕͟͞͡y̴͕͈͓̝͙̠̤͓͈̙̭͎̞͍̟͈̞͜ó̶̵̥̗͜ͅu̸̧̺̘̤̪̝̳̘͈̦͎̘͈̝̖̼͘ͅ ҉͍̯̣̺͔̮͉͇̘̮̗͉̣͖͖̪͟͞a̴͍̥̥̺̯̱̣̫̼̝̱̳̗̣̝̙̗͇͈͢͜ ̧̺̰̱̬̬̰̞̦̣̞̦̦̬̹͠m̴͇̤͇͔͉͘a̴͠͏̳̰̥̹̮͕̬̻̱̦̪̰̺̣̫͎̖̯̀s̵̢͙̩̖̻̝̣̘̤͖̞͇͔̳͈͈͉̦̕ͅͅķ̛̛͏̰̫̺͍̹͚̼̺͚́ͅ, b̷̢͘͞ ̛̀͘͢͝c̡͜҉ ̀͟͠ ̶̡͘͜ ͞҉͜͏ ̷͜͏ ̡́́͠ ̢ ̀͏ ̕͜ ̵̷͘ ̶̴̴̵ę̷̷͜ ̴̸҉̀Í͡ ̸͘͞ ̨͢͜͡͡ ́͢͏͢ ̢̡́́͞ ̷̶̸̀͝ ̸͠ ̶̷̧̀̀ ̵̵̵̢́ ̷̵̛͡ ̕͝ ̷̕͠҉̡ ̸k͟͞͝ǹ͠͏͡ ̶̸̶͢͠ ̨͟͞͡ ҉̶ ͟͏̸ ̢̕ ̴͡͠ ̴̕͡҉͢ ̴͟͟ ̶͞͠w҉͝ ̢̨͟ ̵̕ ̧̢͜͢ ̴̀̕͞ ̀͟͟͠ ̛͢͏ ̡̧̀̀ ̨̢͘ ̕͜y̢̨̛͘͟ǫ͡u҉͢͟͏͟ ̷̛̀ ̴̕͞ ̢͡ẃ̴̡͡͝ ͘͜͝͏ ̧̀͜͡ ̶͢ ̵̶̸̨ ̵ļ́͡͡҉ ̶̧ ̸͡͠͠ ̷͏̸̵͟ ̸̴̀̕͝ ̸͏̧̀͝ ́͢͠ ͏̧̡͟͝ ̡̕͢͟n̕̕̕ ̷̴͟͝͏ ̡̡͝ ́́ ͏͝͏͟ ͜͡͏̴̛e̷̸͏d̸̡͜ ̷́͜͝i̵̶̢̢̧t̴́.͜͢\n\n\n" + \ -\ -\ -"L͜o͞ok̵ ͠f̡or͢ a͝ ͟m͡e͟tal śaf҉e ̢ìn t̛h͞e͏ q͢u̕ar̵r͟y̢ t̢o the ̴e͢ast̡, ͘s͜om͝ew̢he̶re b͢et̀we͘en t͝he̡ ̛o̕cea̴n ̡and̶ ͞t͜he lo͡ok͟o͘u҉t̷ po̧įnt̨.̕\n"+\ -"The code you need is " - -DOCUMENT_POSTGAME_TEXT = "The code you need is " - -DOCUMENT_TEXT_ES = \ -"Me agrada s̵̨a̴̕͠l̀͞u̵d͡a̵r̨̨̧te ̷̡̠͇̼͉̻̦͓́͜͡ ̶̤̦̯͖͚͓̮͓̣̤̰͇́̕ ̴͜͏͈̭̦͙̦̯̟̗̜̼̠̦͘ ̶̶̡̢̲̱̜̹̰̻̘̪̳̫͕̙̕ ̡҉͎̦̙̰̻͉̜̝̺͚̻͇̞̺̦͓́ ̨̘̤̜̞͍̩̠̱̦̫͔̹̩͍͇̜͈́̕͞ͅͅ ̴̴̧̣͍̘̰̗̮̜̰̲̣̙̲̝͚̩̦̭̀͡ ̧̗͚̱͓̥̖͍͕̀ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀ ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎́̀\n\n\n"\ -\ -\ -"Esta es̷̸͢ m̕͞͡i̕ ̨͟͡ ͏ ̷i҉̷̧̀ ̴̡̕s͠ ͟҉̞̭̼̞̯̰͈̘̟̣̜̰͖͙̼͙̙ ̨̳͚͍̤̦̪͔̲̬̻̯͍͉̥̦̱́ͅ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀T ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎̮͍̥̲̟͓̹̞̤̠͉̳̝̫́̀ͅ ̛̫͎̤̥̰̩̹̬͞ ͟҉̞̭̼̞̯̰͈̘̟̣̜̰͖͙̼͙̙A ̨̳͚͍̤̦̪͔̲̬̻̯͍͉̥́ͅu̦̱ ̵̸̹̼̞͚̹̟̺͎̜̖̦͠ ̴̢̳͔̻͕̮͇̱̀͡ͅͅ ̘̟̺̫̪̺͙̦̳̻͙̣̳́́͝͝ ̤͍͍̭͙̦̤͖͕̯͍̜́͜ͅr ̷̶̥̠͍͚͜͞ m͞͡e͜ǹs͜a̵j̕͜e̵͜ y me temo que ha de ser breve. \n"\ -"Te hago entrega de un diario. Parte de él está escrito e҉n͟͏ ҉u͘͢n̡a l̀͢e͏͘͝n̷̷ģ͝ú͜҉a̷̛͏ ̢q̸͏u̵̕e̸ ̴̴͝/͟͝͝/̧͝͡-҉̵̸͡-͏͡o͏͜͝/̶̡̡/͡/͏̵̵̵̀/͏́́ų̨̕͘ ͟҉̴ ̧͠͏͝ ͘̕͟͠͞w̛͘͟͡͠/̵̢͠/̷́͞͞/҉̸̛̀͡ļ̴̕͢͡l̢̛̕͘͜ ̵̀͝͠n͝o̵͢͠=̵̷̨̡͡.̷̴̷̡̡.̷̵͘͟t̶̶̸̡ ̷́͜u͏̴́/̀/̵̧͢͞͡ǹd̀͟͠è͢҉̢̢-͠҉-̧҉̢-̶̧-̷̶͘s̵̶̷̢͠t̡̛a̧ ̶̴̧͝ ̷̸̡ ̸́͞ ͢ ̶̸̡̛͞n̢͠d̸̵ ҉̢͠͠a̴͡͠t̛͏̀͟͠ ̨̢͢͝f̷̵/̵̢̡̢/̧̢҉̵/̨͟͝r͏-̕͟͟͠=̢̕͘͟s̵͟͏t͞͞͡\n"\ -"S͏҉͝i̸̡͘͟n̢͠ ̨́͜e̷m̸̶̴͡b́̕á̢r̛͢g̡̛͝o҉̀͟͏̡, ̷͠҉ ̵̡͡ ̵̕͡͠ ҉̷ ̴̵̛͢,̧́҉ ͘͠͞ ͞͠ǫ̷̵̛̀n҉̡͡/̶̢/̵̸҉/̴̸̢́/̡͞/̀͘̕͢/̨͟c̵̷ ̨̛͘͡͞ ̨͏̛ ̷̶̡̧͜ ̵̨̀͜e̸̢͢͟ ̴͝y҉̸̛́/̵̵̶̨/̢͘/̴͟/͡=͢͏=̡͘=̷̢=҉̴̢/̸̧̧͞/̛̕/̶̨́͠/̶̨̧̕͜.̵.̴͝.̷̶͡u̧͝ ͘͘͜҉.̢̨̕͝͏ ̸̶̵̶̢ ̶̡ ̧̀c̀͢͞͞.͡.̴̶́͟͠.͞͏͘.̨̧͘͞.̴҉͞.̶ą̶͟͞n̕ ĺ̕͜ee̢͘ ͏͝y̵̵͟ ̶̛ sabrás qué hacer. \n"\ -"También te he d͟͞e̸̴j̡a͝d̡̢͠o͡҉ u̶n͏͘ą̵̧ ̸͜má̧͘s̴c̨̛a̧r͜͠á̷̕ b̷̢͘͞ ̛̀͘͢͝c̡͜҉ ̀͟͠ ̶̡͘͜ ͞҉͜͏ ̷͜͏ ̡́́͠ ̢ ̀͏ ̕͜ ̵̷͘ ̶̴̴̵ę̷̷͜ ̴̸҉̀Í͡ ̸͘͞ ̨͢͜͡͡ ́͢͏͢ ̢̡́́͞ ̷̶̸̀͝ ̸͠ ̶̷̧̀̀ ̵̵̵̢́ ̷̵̛͡ ̕͝ ̷̕͠҉̡ ̸k͟͞͝ǹ͠͏͡ ̶̸̶͢͠ ̨͟͞͡ ҉̶ ͟͏̸ ̢̕ ̴͡͠ ̴̕͡҉͢ ̴͟͟ ̶͞͠w҉͝ ̢̨͟ ̵̕ ̧̢͜͢ ̴̀̕͞ ̀͟͟͠ ̛͢͏ ̡̧̀̀ ̨̢͘ ̕͜y̢̨̛͘͟ǫ͡u҉͢͟͏͟ ̷̛̀ ̴̕͞ ̢͡ẃ̴̡͡͝ ͘͜͝͏ ̧̀͜͡ ̶͢ ̵̶̸̨ ̵ļ́͡͡҉ ̶̧ ̸͡͠͠ ̷͏̸̵͟ ̸̴̀̕͝ ̸͏̧̀͝ ́͢͠ ͏̧̡͟͝ ̡̕͢͟n̕̕̕ ̷̴͟͝͏ ̡̡͝ ́́ ͏͝͏͟ ͜͡͏̴̛e̷̸͏d̸̡͜ ̷́͜͝i̵̶̢̢̧t̴́.͜͢\n\n"\ -\ -"B̶u̧şca ̧u҉n͘a ̸caj͟a̵ ̨f͡u̵e͘r̕t́e de͠ mètal̨ en̡ ͝l͏a ͝mi͝n͞a̶ ̴s͠i̡t̡úad̢a ̕al ęst͡e, ̶e̕n u͡n͟ ̀pu̡nt̢o̶ ͝e̶ntr͏e ͢el o̷céano y ̵e͟l m̢i̷ra͢d͞oŕ. \n\n"\ -\ -"He aquí el código: " - -DOCUMENT_POSTGAME_TEXT_ES = "He aquí el código: " - -DOCUMENT_TEXT_PT_BR = \ -"Olá, ̷̡̠͇̼͉̻̦͓́͜͡ ̶̤̦̯͖͚͓̮͓̣̤̰͇́̕ ̴͜͏͈̭̦͙̦̯̟̗̜̼̠̦͘ ̶̶̡̢̲̱̜̹̰̻̘̪̳̫͕̙̕ ̡҉͎̦̙̰̻͉̜̝̺͚̻͇̞̺̦͓́ ̨̘̤̜̞͍̩̠̱̦̫͔̹̩͍͇̜͈́̕͞ͅͅ ̴̴̧̣͍̘̰̗̮̜̰̲̣̙̲̝͚̩̦̭̀͡ ̧̗͚̱͓̥̖͍͕̀ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀ ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎́̀\n\n\n"\ -\ -\ -"È̴̷̵͝s̕͠t͠͏͏a҉́̀̕̕ h̡͜͠҉ ̷̛i̵̶̷͝ ̵̀͢͢s͜ ͟͏̷̵̡ ̨͟͡ ͏ ̷i҉̷̧̀ ̴̡̕s͠ ͟҉̞̭̼̞̯̰͈̘̟̣̜̰͖͙̼͙̙ ̨̳͚͍̤̦̪͔̲̬̻̯͍͉̥̦̱́ͅ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀T ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎̮͍̥̲̟͓̹̞̤̠͉̳̝̫́̀ͅ ̛̫͎̤̥̰̩̹̬͞ ͟҉̞̭̼̞̯̰͈̘̟̣̜̰͖͙̼͙̙A ̨̳͚͍̤̦̪͔̲̬̻̯͍͉̥́ͅu̦̱ ̵̸̹̼̞͚̹̟̺͎̜̖̦͠ ̴̢̳͔̻͕̮͇̱̀͡ͅͅ ̘̟̺̫̪̺͙̦̳̻͙̣̳́́͝͝ ̤͍͍̭͙̦̤͖͕̯͍̜́͜ͅr ̷̶̥̠͍͚͜͞.̴͜/͞m̵̧.̧̨̧́͘.̶͘͝͡-̡̢͟-̷̧͠͝͝-̴̨͜͢y͡҉̧/̀͏͏͘.͜͞.҉̡̀͢-̡̧̕͜-̸͘͜f̷̧͘͜.̨́͜.͞͞.̴̶͞ ḿ̶e͘n̸͟s̵̢͞a̷̴͞g̷͟è͞m̵͝, e infelizmente preciso ser breve. \n"\ -"Eu lhe deixei um diário, que contém partes escritas numa ĺ͡í̧͘͢ńg͏ua҉͠ ̴q̶u̵͠e y̴̴͝/͟͝͝/̧͝͡-҉̵̸͡-͏͡o͏͜͝/̶̡̡/͡/͏̵̵̵̀/͏́́ų̨̕͘ ͟҉̴ ̧͠͏͝ ͘̕͟͠͞w̛͘͟͡͠/̵̢͠/̷́͞͞/҉̸̛̀͡ļ̴̕͢͡l̢̛̕͘͜ ̵̀͝͠n͝o̵͢͠=̵̷̨̡͡.̷̴̷̡̡.̷̵͘͟t̶̶̸̡ ̷́͜u͏̴́/̀/̵̧͢͞͡ǹd̀͟͠è͢҉̢̢-͠҉-̧҉̢-̶̧-̷̶͘s̵̶̷̢͠t̡̛a̧ ̶̴̧͝ ̷̸̡ ̸́͞ ͢ ̶̸̡̛͞n̢͠d̸̵ ҉̢͠͠a̴͡͠t̛͏̀͟͠ ̨̢͢͝f̷̵/̵̢̡̢/̧̢҉̵/̨͟͝r͏-̕͟͟͠=̢̕͘͟s̵͟͏t͞͞͡\n"\ -"H҉.̧̕.̸̵.̸̨̛̕͠-͘͜/̵͏҉/̸͘̕w̴͏͟e̷̢͜v̵͟͜͟(̢̕҉͟ę̸̀͜͞r̶̷͠͠҉ ̵̡͡ ̵̕͡͠ ҉̷ ̴̵̛͢,̧́҉ ͘͠͞ ͞͠ǫ̷̵̛̀n҉̡͡/̶̢/̵̸҉/̴̸̢́/̡͞/̀͘̕͢/̨͟c̵̷ ̨̛͘͡͞ ̨͏̛ ̷̶̡̧͜ ̵̨̀͜e̸̢͢͟ ̴͝y҉̸̛́/̵̵̶̨/̢͘/̴͟/͡=͢͏=̡͘=̷̢=҉̴̢/̸̧̧͞/̛̕/̶̨́͠/̶̨̧̕͜.̵.̴͝.̷̶͡u̧͝ ͘͘͜҉.̢̨̕͝͏ ̸̶̵̶̢ ̶̡ ̧̀c̀͢͞͞.͡.̴̶́͟͠.͞͏͘.̨̧͘͞.̴҉͞.̶ą̶͟͞ —̨ ͞lei̧͜a͢͞-áş ͢e ̛͘͠você saberá o que fazer. \n"\ -"Também lhe d̵͠ȩ̢ì̴xe͘i ̷̸ưm̀ą̸ ́͞má̵s҉͡c̸̨͟ą͠ŕa͟ b̷̢͘͞ ̛̀͘͢͝c̡͜҉ ̀͟͠ ̶̡͘͜ ͞҉͜͏ ̷͜͏ ̡́́͠ ̢ ̀͏ ̕͜ ̵̷͘ ̶̴̴̵ę̷̷͜ ̴̸҉̀Í͡ ̸͘͞ ̨͢͜͡͡ ́͢͏͢ ̢̡́́͞ ̷̶̸̀͝ ̸͠ ̶̷̧̀̀ ̵̵̵̢́ ̷̵̛͡ ̕͝ ̷̕͠҉̡ ̸k͟͞͝ǹ͠͏͡ ̶̸̶͢͠ ̨͟͞͡ ҉̶ ͟͏̸ ̢̕ ̴͡͠ ̴̕͡҉͢ ̴͟͟ ̶͞͠w҉͝ ̢̨͟ ̵̕ ̧̢͜͢ ̴̀̕͞ ̀͟͟͠ ̛͢͏ ̡̧̀̀ ̨̢͘ ̕͜y̢̨̛͘͟ǫ͡u҉͢͟͏͟ ̷̛̀ ̴̕͞ ̢͡ẃ̴̡͡͝ ͘͜͝͏ ̧̀͜͡ ̶͢ ̵̶̸̨ ̵ļ́͡͡҉ ̶̧ ̸͡͠͠ ̷͏̸̵͟ ̸̴̀̕͝ ̸͏̧̀͝ ́͢͠ ͏̧̡͟͝ ̡̕͢͟n̕̕̕ ̷̴͟͝͏ ̡̡͝ ́́ ͏͝͏͟ ͜͡͏̴̛e̷̸͏d̸̡͜ ̷́͜͝i̵̶̢̢̧t̴́.͜͢\n\n"\ -\ -"P̵r̡o͢cu̧r͞e͡ ͏u҉m͞ ͘cof̢re ͢de͠ ̛me̢tal na̶ pedrȩir͏a ą ҉les̷té,̴ ́e̴nt̡r̨e҉ o̕ ma͜r ę o̴ p͜on̡t́o̕ ̡de͘ o̵b̀s̴e͢r҉va̵ç̨ão̡.\n\n"\ -\ -"O código necessário é: " - -DOCUMENT_POSTGAME_TEXT_PT_BR = "He aquí el código: " - -DOCUMENT_TEXT_FR = \ -"Bonjour ̷̡̠͇̼͉̻̦͓́͜͡ ̶̤̦̯͖͚͓̮͓̣̤̰͇́̕ ̴͜͏͈̭̦͙̦̯̟̗̜̼̠̦͘ ̶̶̡̢̲̱̜̹̰̻̘̪̳̫͕̙̕ ̡҉͎̦̙̰̻͉̜̝̺͚̻͇̞̺̦͓́ ̨̘̤̜̞͍̩̠̱̦̫͔̹̩͍͇̜͈́̕͞ͅͅ ̴̴̧̣͍̘̰̗̮̜̰̲̣̙̲̝͚̩̦̭̀͡ ̧̗͚̱͓̥̖͍͕̀ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀ ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎́̀\n\n\n"\ -\ -\ -"C̷͞'̡̨ȩ̀͜s̶̷̢̕t̶̸́҉ h̡͜͠҉ ̷̛i̵̶̷͝ ̵̀͢͢s͜ ͟͏̷̵̡ ̨͟͡ ͏ ̷i҉̷̧̀ ̴̡̕s͠ ͟҉̞̭̼̞̯̰͈̘̟̣̜̰͖͙̼͙̙ ̨̳͚͍̤̦̪͔̲̬̻̯͍͉̥̦̱́ͅ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀T ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎̮͍̥̲̟͓̹̞̤̠͉̳̝̫́̀ͅ ̛̫͎̤̥̰̩̹̬͞ ͟҉̞̭̼̞̯̰͈̘̟̣̜̰͖͙̼͙̙A ̨̳͚͍̤̦̪͔̲̬̻̯͍͉̥́ͅu̦̱ ̵̸̹̼̞͚̹̟̺͎̜̖̦͠ ̴̢̳͔̻͕̮͇̱̀͡ͅͅ ̘̟̺̫̪̺͙̦̳̻͙̣̳́́͝͝ ̤͍͍̭͙̦̤͖͕̯͍̜́͜ͅr ̷̶̥̠͍͚͜͞.̴͜/͞m̵̧.̧̨̧́͘.̶͘͝͡-̡̢͟-̷̧͠͝͝-̴̨͜͢y͡҉̧/̀͏͏͘.͜͞.҉̡̀͢-̡̧̕͜-̸͘͜f̷̧͘͜.̨́͜.͞͞.̴̶͞ ͟m͏ȩ͢͢s̴͡s̀͟҉a̵͡g͝e̸͡,̕͏̡ et j'ai bien peur de devoir être bref. \n"\ -"Je vous ai laissé un carnet, en partie écrit dans u̢͏͡n͏͟ȩ ̧͜͝l҉͢àngu͝e͘ ҉̸q̕͞ue y̴̴͝/͟͝͝/̧͝͡-҉̵̸͡-͏͡o͏͜͝/̶̡̡/͡/͏̵̵̵̀/͏́́ų̨̕͘ ͟҉̴ ̧͠͏͝ ͘̕͟͠͞w̛͘͟͡͠/̵̢͠/̷́͞͞/҉̸̛̀͡ļ̴̕͢͡l̢̛̕͘͜ ̵̀͝͠n͝o̵͢͠=̵̷̨̡͡.̷̴̷̡̡.̷̵͘͟t̶̶̸̡ ̷́͜u͏̴́/̀/̵̧͢͞͡ǹd̀͟͠è͢҉̢̢-͠҉-̧҉̢-̶̧-̷̶͘s̵̶̷̢͠t̡̛a̧ ̶̴̧͝ ̷̸̡ ̸́͞ ͢ ̶̸̡̛͞n̢͠d̸̵ ҉̢͠͠a̴͡͠t̛͏̀͟͠ ̨̢͢͝f̷̵/̵̢̡̢/̧̢҉̵/̨͟͝r͏-̕͟͟͠=̢̕͘͟s̵͟͏t͞͞͡\n"\ -"H҉.̧̕.̸̵.̸̨̛̕͠-͘͜/̵͏҉/̸͘̕w̴͏͟e̷̢͜v̵͟͜͟(̢̕҉͟ę̸̀͜͞r̶̷͠͠҉ ̵̡͡ ̵̕͡͠ ҉̷ ̴̵̛͢,̧́҉ ͘͠͞ ͞͠ǫ̷̵̛̀n҉̡͡/̶̢/̵̸҉/̴̸̢́/̡͞/̀͘̕͢/̨͟c̵̷ ̨̛͘͡͞ ̨͏̛ ̷̶̡̧͜ ̵̨̀͜e̸̢͢͟ ̴͝y҉̸̛́/̵̵̶̨/̢͘/̴͟/͡=͢͏=̡͘=̷̢=҉̴̢/̸̧̧͞/̛̕/̶̨́͠/̶̨̧̕͜.̵.̴͝.̷̶͡u̧͝ ͘͘͜҉.̢̨̕͝͏ ̸̶̵̶̢ ̶̡ ̧̀c̀͢͞͞.͡.̴̶́͟͠.͞͏͘.̨̧͘͞.̴҉͞.̶ą̶͟͞ ̧͜͏L̢i̷̛se̢͏҉z͟͏-̨̕͞l͞à͜͏ ̴e̴͝t̕ ̀͝vous saurez quoi faire. \n"\ -"Je vous ai aussi lai̴s̛̀̀s̢̡ȩ́̕ ͝͠ừn̛̛͠ ́͡m͜҉a̕͝s̸̶qu̴e̴̢̛,b̷̢͘͞ ̛̀͘͢͝c̡͜҉ ̀͟͠ ̶̡͘͜ ͞҉͜͏ ̷͜͏ ̡́́͠ ̢ ̀͏ ̕͜ ̵̷͘ ̶̴̴̵ę̷̷͜ ̴̸҉̀Í͡ ̸͘͞ ̨͢͜͡͡ ́͢͏͢ ̢̡́́͞ ̷̶̸̀͝ ̸͠ ̶̷̧̀̀ ̵̵̵̢́ ̷̵̛͡ ̕͝ ̷̕͠҉̡ ̸k͟͞͝ǹ͠͏͡ ̶̸̶͢͠ ̨͟͞͡ ҉̶ ͟͏̸ ̢̕ ̴͡͠ ̴̕͡҉͢ ̴͟͟ ̶͞͠w҉͝ ̢̨͟ ̵̕ ̧̢͜͢ ̴̀̕͞ ̀͟͟͠ ̛͢͏ ̡̧̀̀ ̨̢͘ ̕͜y̢̨̛͘͟ǫ͡u҉͢͟͏͟ ̷̛̀ ̴̕͞ ̢͡ẃ̴̡͡͝ ͘͜͝͏ ̧̀͜͡ ̶͢ ̵̶̸̨ ̵ļ́͡͡҉ ̶̧ ̸͡͠͠ ̷͏̸̵͟ ̸̴̀̕͝ ̸͏̧̀͝ ́͢͠ ͏̧̡͟͝ ̡̕͢͟n̕̕̕ ̷̴͟͝͏ ̡̡͝ ́́ ͏͝͏͟ ͜͡͏̴̛e̷̸͏d̸̡͜ ̷́͜͝i̵̶̢̢̧t̴́.͜͢\n\n"\ -\ -"Cher͞c̷he̴z un c͞o͜ff́r͞e-f̴or͟t͟ ̸en͏ ͝mé̛tal͏ ͟da̶nş ͟l͏a͠ ͝cąr͡r͠i̡èŗe à͞ l͘'͞e͜s̵t, ̷q͘uel̷q҉ue̴ ́part e͠ntre͞ ̡l'o̕c͠éań ̡et le̷ p̛os͏te ͡d̴'̕ob͟s͏er̀vat͜iòn͘.̡ ͝\n\n"\ -\ -"Le code nécessaire est : " - -DOCUMENT_POSTGAME_TEXT_FR = "Le code nécessaire est : " - -DOCUMENT_TEXT_JA = \ -"親愛なる ̷̡̠͇̼͉̻̦͓́͜͡ ̶̤̦̯͖͚͓̮͓̣̤̰͇́̕ ̴͜͏͈̭̦͙̦̯̟̗̜̼̠̦͘ ̶̶̡̢̲̱̜̹̰̻̘̪̳̫͕̙̕ ̡҉͎̦̙̰̻͉̜̝̺͚̻͇̞̺̦͓́ ̨̘̤̜̞͍̩̠̱̦̫͔̹̩͍͇̜͈́̕͞ͅͅ ̴̴̧̣͍̘̰̗̮̜̰̲̣̙̲̝͚̩̦̭̀͡ ̧̗͚̱͓̥̖͍͕̀ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀ ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎́̀\n\n\n"\ -\ -\ -"君にメッセージをh̡͜͠҉ ̷̛i̵̶̷͝ ̵̀͢͢s͜ ͟͏̷̵̡ ̨͟͡ ͏ ̷i҉̷̧̀ ̴̡̕s͠ ͟҉̞̭̼̞̯̰͈̘̟̣̜̰͖͙̼͙̙ ̨̳͚͍̤̦̪͔̲̬̻̯͍͉̥̦̱́ͅ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀T ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎̮͍̥̲̟͓̹̞̤̠͉̳̝̫́̀ͅ ̛̫͎̤̥̰̩̹̬͞ ͟҉̞̭̼̞̯̰͈̘̟̣̜̰͖͙̼͙̙A ̨̳͚͍̤̦̪͔̲̬̻̯͍͉̥́ͅu̦̱ ̵̸̹̼̞͚̹̟̺͎̜̖̦͠ ̴̢̳͔̻͕̮͇̱̀͡ͅͅ ̘̟̺̫̪̺͙̦̳̻͙̣̳́́͝͝ ̤͍͍̭͙̦̤͖͕̯͍̜́͜ͅr ̷̶̥̠͍͚͜͞.̴͜/͞m̵̧.̧̨̧́͘.̶͘͝͡-̡̢͟-̷̧͠͝͝-̴̨͜͢y͡҉̧/̀͏͏͘.͜͞.҉̡̀͢-̡̧̕͜-̸͘͜f̷̧͘͜.̨́͜.͞͞.̴̶͞ 手̛͜҉短̧͢に̷͏要̷̨件̧͘͜͢を̸̕͜͜͞説明しなければならない。\n"\ -"1冊の日記を残̶̧́し̢͝͠た̴͘͠。̵̸̀̕ y̴̴͝/͟͝͝/̧͝͡-҉̵̸͡-͏͡o͏͜͝/̶̡̡/͡/͏̵̵̵̀/͏́́ų̨̕͘ ͟҉̴ ̧͠͏͝ ͘̕͟͠͞w̛͘͟͡͠/̵̢͠/̷́͞͞/҉̸̛̀͡ļ̴̕͢͡l̢̛̕͘͜ ̵̀͝͠n͝o̵͢͠=̵̷̨̡͡.̷̴̷̡̡.̷̵͘͟t̶̶̸̡ ̷́͜u͏̴́/̀/̵̧͢͞͡ǹd̀͟͠è͢҉̢̢-͠҉-̧҉̢-̶̧-̷̶͘s̵̶̷̢͠t̡̛a̧ ̶̴̧͝ ̷̸̡ ̸́͞ ͢ ̶̸̡̛͞n̢͠d̸̵ ҉̢͠͠a̴͡͠t̛͏̀͟͠ ̕͏͏͢͞な̷̨̡͝言͠҉̡語͏҉で書かれている。\n"\ -"H҉.̧̕.̸̵.̸̨̛̕͠-͘͜/̵͏҉/̸͘̕w̴͏͟e̷̢͜v̵͟͜͟(̢̕҉͟ę̸̀͜͞r̶̷͠͠҉ ̵̡͡ ̵̕͡͠ ҉̷ ̴̵̛͢,̧́҉ ͘͠͞ ͞͠ǫ̷̵̛̀n҉̡͡/̶̢/̵̸҉/̴̸̢́/̡͞/̀͘̕͢/̨͟c̵̷ ̨̛͘͡͞ ̨͏̛ ̷̶̡̧͜ ̵̨̀͜e̸̢͢͟ ̴͝y҉̸̛́/̵̵̶̨/̢͘/̴͟/͡=͢͏=̡͘=̷̢=҉̴̢/̸̧̧͞/̛̕/̶̨́͠/̶̨̧̕͜.̵.̴͝.̷̶͡u̧͝ ͘͘͜҉.̢̨̕͝͏ ̸̶̵̶̢ ̶̡ ̧̀c̀͢͞͞.͡.̴̶́͟͠.͞͏͘.̨̧͘͞.̴҉͞.̶ą̶͟͞n̕読̵͏め̧͡ば̴̛̀͠成すべきことがわかるはずだ。\n"\ -"他にマ̨̧̧ス̷́͟͜ク̧͏͏を͏̛͘͞残̴̵し̧̀た́͡。̀͢҉҉b̷̢͘͞ ̛̀͘͢͝c̡͜҉ ̀͟͠ ̶̡͘͜ ͞҉͜͏ ̷͜͏ ̡́́͠ ̢ ̀͏ ̕͜ ̵̷͘ ̶̴̴̵ę̷̷͜ ̴̸҉̀Í͡ ̸͘͞ ̨͢͜͡͡ ́͢͏͢ ̢̡́́͞ ̷̶̸̀͝ ̸͠ ̶̷̧̀̀ ̵̵̵̢́ ̷̵̛͡ ̕͝ ̷̕͠҉̡ ̸k͟͞͝ǹ͠͏͡ ̶̸̶͢͠ ̨͟͞͡ ҉̶ ͟͏̸ ̢̕ ̴͡͠ ̴̕͡҉͢ ̴͟͟ ̶͞͠w҉͝ ̢̨͟ ̵̕ ̧̢͜͢ ̴̀̕͞ ̀͟͟͠ ̛͢͏ ̡̧̀̀ ̨̢͘ ̕͜y̢̨̛͘͟ǫ͡u҉͢͟͏͟ ̷̛̀ ̴̕͞ ̢͡ẃ̴̡͡͝ ͘͜͝͏ ̧̀͜͡ ̶͢ ̵̶̸̨ ̵ļ́͡͡҉ ̶̧ ̸͡͠͠ ̷͏̸̵͟ ̸̴̀̕͝ ̸͏̧̀͝ ́͢͠ ͏̧̡͟͝ ̡̕͢͟n̕̕̕ ̷̴͟͝͏ ̡̡͝ ́́ ͏͝͏͟ ͜͡͏̴̛e̷̸͏d̸̡͜ ̷́͜͝i̵̶̢̢̧t̴́.͜͢\n\n"\ -\ -"東͠に͡向か͜い͢、海と見͠晴し͜台̡と̡の間のど͘こかにあ̸る採石場̸で̛金͜庫͘を̶探̢すんだ̴。̸\n\n"\ -\ -"必要なコードは次の通りだ: " - -DOCUMENT_POSTGAME_TEXT_JA = "必要なコードは次の通りだ: " - -DOCUMENT_TEXT_KO = \ -"안̛ͥ̍ͅ녕̣͖̣̱͍̗하̖̲̀십̤̥̱͂̆̊ͩͫ니̱͇͔̣̱͘까̷̑͂̉̈́̽,̵̜̩̮̤̣̣ ̷̡̠͇̼͉̻̦͓́͜͡ ̶̤̦̯͖͚͓̮͓̣̤̰͇́̕ ̴͜͏͈̭̦͙̦̯̟̗̜̼̠̦͘ ̶̶̡̢̲̱̜̹̰̻̘̪̳̫͕̙̕ ̡҉͎̦̙̰̻͉̜̝̺͚̻͇̞̺̦͓́ ̨̘̤̜̞͍̩̠̱̦̫͔̹̩͍͇̜͈́̕͞ͅͅ ̴̴̧̣͍̘̰̗̮̜̰̲̣̙̲̝͚̩̦̭̀͡ ̧̗͚̱͓̥̖͍͕̀ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀ ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎́̀\n\n\n"\ -\ -\ -"처̡̜͕̺̘̳ͫ͗̃ͩ͂̿͊ͫ͒ͣ̂̽̔̌͐͢͝음̧͎̼͎͖̻͈̇̂ͪ͑́ͥ̉͛̓̔ͨͩ͋ͤ̿̏͊̈́͑͢으̷̧͑̆̔̍̍̆̾̂̊̕͏̩̟̰̠̺̪̪͍̲̰ͅ로̙̟͉͎̒̊͊͋ͮ͝ ̪̙̹͉̿̽̓̏ͫ͐̈́͊̋͌̿͗̃̈͌̐͐͢͠메̶̯̳͉̱̮͇̻̮̩̩̥̦̼̥̹̪̻͓͓̽ͫ͊ͦ̅ͩ̈́ͤ́͘시͎͔͓̻̜̼͆̂̾ͤͣͣ̀지̸̷̣̬̹̫͖̭͓̙̻̜͉̞̗̙͎͕̓̃̉̓ͅ를ͩ͌ͧ̏ͬ͏̷͍̝̭͙̳̟̱͔̣̟̼̹͇̬̕ ̡̭̩̤͉̲̪̟̫̙̈͊͑ͬ̅̓́̑ͩ͌͊̔͆ͭͦͨ̚͢͟보̫̝̥͎̩͉͖͖̥͈̩̞͉̤̗͍͔̔ͪͦ́̄̅͌̀͐ͩ͆͂ͪͫͣ̅̀́̚͝냅̷̷̺̳̟̙̺̖̹̰́̅ͧ́ͩͯͮͫͬͬ̏̃̀͞니̆ͥ̏̍͒͆ͧ̔̂ͧ̍̒̀ͬͭ̚͘͢͏̞̺̲͙̘͢ͅ다̔̇́̆ͥͤ̂͊̿̃͊̇͏̧͇̲̟̟̳̳͕͢.̈́̅̓͏̶̢̧͈̮͎̩͔̩̞͈̥̳̜͞ ͬ̾̌͑̂͌̚͏̴̴̣̤͎̭͖̻͓̝̯͘간̗̩͕̤̹̮̱̗͙͇̋ͮ̌ͣ͘͞ͅ략̢̬̭̮̮̳̤̜̩̰̻͈̺̣͓̩̥̤̖̻̅ͩ̒ͦ̈́̄͊ͥ͟͡͝͠하̋̆̿̊ͦ̊͒ͩ̏ͥͭ̑ͪ͋̌ͥ̋̆͛҉̜͙̗̫͜게̴̙̯̺̤̗͚̪͚̯̙̱͍̃̐͋̈́̍̀̚͘͝ ̸̸̘̤̘̥͍̮̝͉͉̬̳̭͍͕̥̣̄̐ͨ͗̾̓ͪ̎̓͆͆̚͜͢͠써͆̆̏̌̈͌̅ͫ̇́͝҉̹̦͎̻̜̖͘͠야̷̴̢̡̰̱̦͎͈̯͙͈͕ͫ͊̍ͮͨͧ̍̇̚ ̸̱͉̦̲͙̘̰̹̙̌́́̔̉ͪͯ̌͒̂̈̆ͣ̕͘한̗̟̩̟̹͎̳͙̗̣̻̱̦͈̹̙̟̣̆̇͐ͣ̉͆̾͌̋ͭ͐̂͟͝다̡̞̭̱̠̺͙̤̞̰͋̉̓ͥ̀는̴̥̥͔̠̳͇̗̬̩̱̹̩̥͓ͨ̂̿͒͂ͬ̈́͗͌̈̈͌̕͘͟͞ͅͅ ̸̷̧͉̮̻̳̪̮͕̩͉̲̳̘̔̿̿̂͗̅̿̓͛̾̐̈́̀̚걱̠͖̞̙̺̺͈̠̞̬͔̥̪͕͓̳͈̪̎̊̅͆̃̓ͣ̒͊͟͞정̶̭̘̭͔̱̜̥͍̝̺̱̖̹̥͛̂̇ͫͣ́̚͜͜이̆̀̅ͩ̿̎̉̎͗ͧ͌͋̓͆͘͝҉̮̼̝̺̤͎͓̳̙̪̪̲̪̮̝̮͔̹ ̶͖̠̞̣͉͎̤̦̠̹̘͔̮̤̎ͫ̏ͩͩ̔́ͩ̈́͌̍̀ͫ͢͜앞̨̢̾̑ͮ͑ͩ̽̍ͥͮ̀͗͗̽̇́͂ͪ̌҉̜͙̥͇͍͎́ͅ서̷̸̢̮͉͍̘̱̪̠̤͚̰͚̜̝̫̬̩͉ͯ̓͒́는̢̗͖̮̭̰̹̮̟͍̪͚͓̝̟̣̊̃̈́̀̂ͩ̊̋ͩ̑ͬ̔͑̈́ͣ͒̚͜군̸̴̪̱̞̘̠̭͕̖̠̹͌̈́̏̒͆ͣͩͯ͗̈́͘͜͟요̍̾̽̒̑ͦ̑̾̄ͤ̋ͤ̑̒͗͋̓̏ͭ̕͏̲͔̥̪͙͍̲̞͚̺͍̺̞͉̥͟͡.̶̵̷̗̭͙͇̳̌͛͌ͩ͑̍͆́̽́ͭ̈ͬ͝\n"\ -"당̇ͭ̐͂ͬ̿̎͒̽͋͐̋ͧ͗̈́҉͟͢҉̼͍̘͔̠̬͔̞̲̠̝̠͇̖̬̗̞̺̖͞신̴̹̭͈̤̥͚͉̙̺͎͈̦̣̭̫̣͖̓́̔̉͘͞께̷̛̙̞͓̰͔͉̤̻̼̭̳̭̟̤̭̙͚̖̱̊̑͗̾͟͠ ̷̵̴̱̻̗͕̖̺͈̫͇̬͎̤̹̦͔͓̗̾ͪͨ̅̄̊́͞일̸͕̱̖̺̹̬̜̱̗̗͎̬̬̗̳͈̎̈͛͊̍̊̔̆̾̅ͣͬ̊̅͌ͮ͢͞지̡̊̂̌̈ͥ̍̕͜͡͏̼͙͓를̶̨̼̗̰̮̤̰͇̜̫̦̣̦̟̘̭͓̫̝͊̀͑́̄̿ͣ̊̀͋ͪ̓ͧ̈́̉͒͢ ̧̻̗͐̌̓̃͂̊̐͊ͩ̈̕͘ͅ남̴̛͚͍̝̩̤͇͈̞̙͕̮͈̲͎͙͙̊ͤ̅ͪ͌ͪ겨̷̶̧̛̞̼͚̯̥͔̟̲͇͕̠̹̦̺̺̏ͮ̾̄̃̑ͨͦ͑̽͠ ̸̢̛͎̯̝̭̗̋̅ͩ̓̌̅͐̓̍ͩ̓͢͠ͅͅ두̷̴̛̛̩͉̜̱̝̖̄̆͑̓̽̆͐̔̅͒̏̐̍ͮ̐̓͗̚̚었͔̱̠̳͖͓͕͓̮͇̘ͯ͌́ͥ̀͘͞습̸̵̧̤̳̣͖̝̮̱͖̝̹͈̟̟̻̩̭̞͔̥ͦͧ͑́́ͩ̓͐ͦͩ̉͡니̸̧̼̺̜̙̝̹͎̩̗̬̽͌̈́ͪͮ̌̀̓̓̒ͅ다̵̹̻͓͈̹̪̝͈͈̳͉̳̗̝͐̿̐͊̇̾͆͋̂̐ͩ̓̽̀͘ͅ.̵̜̝̫̝̗̱͚̱̳͎̜̬̖͎̭͚̪̝̻̆ͪͫ͊̓̈́ͪ̑̾ͯ̈́̉̀̇̿̀̚ ̙̘̠̖̮͓̫̳͇̳̩̙̭̻͈̏̄ͤ̔͛ͣ͊̒̊̈́͆ͪ̓̄̋͛͠일̬̗̟̫̤̭͈̝̺͎͙̯ͣ͒̏ͭͭͩ̋́̕͞ͅ지̛̮̠͈̠̜͙͌̅̽͑͒́́́͑̃ͣ̾͒̔의̷͔̯̣̪͈̣̤̙̫̤̠̜̠̞̘͍͐̏ͨ̃̽̑͆͆̾̎ͣ̏̆̚̚͢ͅ ͯ̊ͯ̌ͣͭ̿͌̚͏̢̙̭͚̪̹̩͚̫͓͉͔일̃ͧ̾̐̅̓ͣͧ̍̓ͮͦ̊͒̋҉͏҉̢̘͕̹̹̱̼̜̥̬ͅ부ͫ̓̌ͧ̇̽́̉͒ͦ̌̀͏̨̭͚̥̭͇͍̫͔̘는̎͑͊́̌ͥ̈̚҉͓̫̭̳̞́͢͡ ͌̒ͪ̑ͩ͐ͫ̄͒̚͏̸̨̲̹͇͎̫̳̙̦̠̦̗̀당̡̖̰͓͚̥̘͉͉͎̬̞̩̮̣̫͔̌̓̍̂͒ͨ͗̎̈́̈̂̿ͤͥ͢͜͝ͅͅ신̷̔͊̑̉̏̅ͪ̓͐͌͏̯̜̟̜̖이̇̏̏͗̿ͬͨ̃̋̔̀̀̚͢͏̴̣͙̬͇̗̯̹͙̺̯̝͉̼̲̟̜ ̧̄̉̂̄ͥͩ̐̎͐̋̈̽ͩ͐̔̆͞͏͙͇̞̻̠̝͔̩͎̖̖̱읽̧̈́̓͑̊̐͒̑͑̕͏̗̹͎̠̰͍͉̲̻̪̹̩͢͡을̸̲͕̦̼͙͓̝̟̪̲͍͎̮̘͙ͩ͐̿ͦ͌̅ͧͨͭ͂̚͢͢ ̶̘̦͈͚͈̤̖̮̺̳̜̰̲̪̭̼̞̹̯ͬ̒͛̐̐̿ͣ̀ͦ̓͌ͭͬ̄̂̍ͦ̓̀͘͟͠수̵̢̢̘̱̖͙͑̋̊̏́͢ ̴̵̸̵̤͍̳͇̝̣͙̻̠̳̜̱̥ͩͯ̂̑̂̿̋ͥ͆͐̕ͅ없̬̩̩̻͖̪̈͆ͯ̄̉ͧͨ͊͒̚͘͘͡͞는̷̧̢̖̺̻̠̞̭͉̥̹̩̥̞̦̝̯ͭ̽̄̉̾͐̀ͦ͊͑̎̂̑͢ ̵̧̞̟̬͔̝̺͔͙̝̖̖̲̩̂͛ͩ̎̈ͧͥ̿̆͗̅̿̍̀̚ͅͅ언ͤͦ̓̅̋ͨ̋ͩ̉̅̔̅̏҉̦̘̜̼̻̲̠͓͎̩어̢̼̞͍̝̬̭̫̇ͫ̃ͭ̚͘͝͠ͅ로̴̨̢͖̫̺̠̲̱̐ͬ͒̔̿ͫ̍͒͛̉̒̎̃ͥ̄͑̆̓͜ͅ ̴̨͇̘̮͎̩̠͖͚̗̖̾̌̄ͫ̃ͩ͂ͪ͂̆̊ͭͣ͟작ͭ̓̓̌̒͏̨͇̭̻̮̪͔̙̼̗̮̣͉̘͙͕̭̳͟ͅ성͔͔̼͎̘ͯ̋́͗͛̆̎̿̿̋͆̏̃ͮͮ̐̏̚͢͝되̶̴͎̣̱̤͍̙͍̻̼̥̫̗̼͑̂̐͡ͅ어̴̜͖͇̮̻̞̫̪͈͍ͭ̆ͬͨ̎̍͌ͥ́͘ ́̔ͩ̂͆͑ͯͨ̆͆ͬ̕͏̢͇̦͉̗͇̜͎͉͈있͗ͫ̏ͤͥ́҉҉̧͝҉̗͇͎͖͍̗습̸ͩ̀̈́ͪ̓͋̂ͨͫ҉̧҉̪̞ͅ니̷̧̰̩͍̳̥̹͉̣̣̟̘̘͍̾ͭͣ̌̋͘다͋ͭ̎̿ͬ̑̓̽ͫ҉̷̨̧͎̤̪̼͈͙̱̮.ͬͣͥ̇ͪͧ̋ͭ͜͏̴̩͔̱͇͔̲̪̥\n"\ -"̵̸̛͖͉͈͍̦̟̜͚̤̞̦̭̺̞̹̫̥̮͋̓ͭ̏̇̏͆͑̽̓͋̆̏͊́하̵̶̶̢̿ͤͣ̀̒͋ͣ͐ͩ͗͏̣̺͍͔͎̻̻̫̪지̶͖̼͔͙̮̘͚̩͈̙̲̮̖̦̲͇̬ͯ̿̍̀̚͢만̨ͦ͑͊̓͋̒̇̎̒̎̋҉̡̜͚̳͕͚̱̲̞̥͎̥̝̖͞͞ ̍͋͐̔͌ͨ̏ͤ͌͋ͦͣͮ̿͏̡͇͖̻̺̙̰̳̘̮̗̲̦͔͈̰̖̖진̥̲̱͎̘̦ͭ͐̓̉ͤͦ̐ͧ̾̃̂̾̓̆ͥͩͥ̑̀̀̚͝ͅ행͆̎͑͏̛͍̗͇̟̮̝̗을̢̖͕̙͉̙͉͉̼̫̫̩̫̑͌ͤ͛̉̀ ̶̙͕͉̥͙͕̙̳̖̖̠͉͕̝̬̭͋̓ͨ̏ͯ̿͢͠͡위̴̙̞̯͕̮̱͈̣̤̫̭̪̏ͧ͌͂̉͘해̢͊̔̔̚͏̡̢̥̜̲͖͔̫͎͓̲͕̥̱͝ ͨͮ̌͆͊͒͒̉ͤ̈ͩ͆̀́͢͏̰̟̭̳̠̦͚̯̱̫̰̭͎̳̙̗̜̖̗일̴̸̡͈͇̦̺̲͔̼́ͪͯͫ̆͐͗ͅ지̸̫̤̪͇͖͍̦̣̰̺̲̊ͨ͛ͭ̆͛ͧͦ̄̄̍를̧̢̭͓̞͖̖̝͓̞͎̖͎̮͖̦ͮͪ̈̊̆̋̾̂ͮ̍̄͗͑ͣͣ́͘͘ ̵́̀ͬ͌ͫ̃̔̃ͮ̃̑͛ͤ͜҉̞̠̙̹͖̱̻͔͎̠̯͇͔͟번̴̹̬͕̫̘ͨ͐͐ͮ͐ͥͫ͢͟역̵̨̪̠͔̰͎̘̝͒̆ͥ̀ͯ̄ͩͪ̚할̵̢̢͍̹̺͓̩͔̰̣̣͕̙̊ͩͥ̇͆̆ͯͫͦͫͯ̑ͬͫ͆̉̾͟ ̧͙̖͈̪͎̖̥̀ͧ̈́ͫ̽͆̅ͣ̒͆̈ͧ̾ͨ̾̌͋͑͜기̳̳̟̣̟̟̼͚ͪͬͪ̄͜͢ͅ회̴̶͖͍̥͚͉̰̘̝͉̠̺ͫͦ̀̐ͣͩͨͫ͒ͧ̅̇ͯ͒͊̚͜͞ͅͅͅ가͐ͧ͊̉̊҉͕̱͍̠̹͍̠̟̱́ ̵̧̣͈̣̞̩̖̯̓̀ͩͪ̃̔ͧ̄ͭͬͣ̓͂올̨̨̹̪̬̤̗̜̼̜ͩ̆̓ͨ̉̃̐̌ͫ͆̒̕ ̔ͥ͊̿̃̓̊̌͐̂ͧ͒ͧͫͣͪ͟҉̘͚̼̻̤̱̣̳͢ͅ것͋̈̽̔̐̓̐̌̿̾̽̅ͮ̓̑͆͑͋͏̙̪̼̝̼̟̘͓͕͚͚̟͎ͅ입ͩ͂̒̈́̈̉͂̾҉̧͔̪̰̠̹́니̷̡̜͉̝̼̱̤̤̽ͪ̍ͩ̊ͩ̀ͨ̀́͢다̷̷̧̺̩͈̮̤͇̼̿̾͐̾͘.̸̈͋͋ͥ̐͒҉̻̳͖͎̱̱̠̳̫̹̹ͅ.̧̧̝̥̹̫̭͚͓̤̻͖͈̻̲̔̑̍͋̈́͌̌̒̃̔̇͑.͗ͩ̀̆ͫ͑́̉ͧͣ͏̛̫̠͎̭̖͠͞ ̵̨̘̙̠̹̗̫̠͍͇͔̙̝̬̗̜ͭ̿̏̊͑͐̓͛̍̾̇읽̨͉̞̥̬͎͈͈̼̦̼̯̬͍ͩͩ̾̑̓̾͛̀ͨͬͫ́̚͠͡어̡̰̪̹̲̒͐̄̋͡͡ͅ ̨̡͇̰̼͍̪͚͈̗̪͉̩̳̝̹ͯ̊̈ͭͫ̏̿͆̃̃̀̕͜보̹̘̠̣̙̘̠̘̫͉̈́̍̀̓̾̊̓ͫ͗ͭ̄̉̀ͭ́ͫͣ̒̀̚͠͞͡시̡̬͖̣͚͔̭̝ͮ̉̓̋̉ͦͥ̍ͧͫ͊̓̅͌̃͘면̿̂ͥ͒͌̑̌ͤͥͮ̑̾̚҉̷̢̛͙͎͕̯̮̮̻͖̝̻͠ ̸̮̲̯̯̫̳̙͚͔̩̺̤͍̭̟̜͈̟̯ͭͪ̆̄ͭ͌̚무̶̬̻̻̘̳͈͈̦̩͙̗͉̹̦͇̂̍̈̽̈̆̓̅̅̊͛ͨ̒͛̔ͪ̾̀̀͜엇̸̨͙̮̣̫͎̳̤̮͍̼̰̜͓̲ͥ̇̊̉ͧ̾ͯ̏͌̂ͪ͘을̴̬̘̲͇̯͓̉͒̈́̅̈́̇͌̈́̊̏ͨ͗͆̊ͧ̄̈͘͟͝ ̻̹̜̻̼̬̪͎ͥ̿͐̈ͨ̄̿́̓̒̍̍ͩ̍̋ͩ̈́́̚͝해̟͇̩͔̟̜͉̹͕̭̰̭̠̾͆͂ͮͭ͛̑ͯ͑̈́ͫͮ͆ͮ̄̔ͬ͟͜͝ͅ야̡̽̈́̂ͬͧͩ̾͛͂̌ͭ̍̿ͪ̽̃̐̚͏̸҉̩̰̥͓̗ ͭ͑̒̋ͭ̍̈͗̿ͫ͂͂̊͗ͤ́̚҉̶̸̴̺̝̠̘̼̺͎͇͕̗̟͎ͅ할̸̧̦͓̦̮̯̟̘͈̲̺̟̲͎̬̙̟̗̾̒ͥ͒͐ͬ̑̄̂ͧ̾ͬ͊̑̓̚͜͡ͅ지̵̸̡̧̩̯͇͉̥̮̺͔̤̘̪̥̜̬͚̞͔̳̾̇̓͛ͮ͘ ̴̨̨̛̦̟̰̞͙̥͉͕̳̮̞ͯ̃ͯ͋ͯͧͬͨ̽͂̔̾̕알̶̨̺͕̱͎͖͂ͯ̍̾͜게̷̨͕̙̦͈͈̼͕̺͉͍͕͑̓̆̒͒̇̈͆͋̅̌ͯ̿͗̃ ̵̵̸̤͍̟̳̯̫͙̞͕ͨͭ͊̍̓͗̉̆̿̊͆̓̎ͯ̓̋ͥ̀ͅ될̵̺̙̫̩͔́͌͌̅̊̅͌͂̆̐ͯͣ̓̚̕ ̧̞̗͔̬̱̭̓ͫ̾̃̐̀̀́͡͠것̍͆̽ͤͭ͛ͮͯ̽̄̊̚͏̷̢̪̳͖͕̼̯̰̮̜̥̯̤̤̙̟̹͙̭̀͞입̷̷̖̠̹̻̥͈ͩͩ̔̄̋ͨ̏̍͊̇̋̅̾ͬ̈̑̑ͤ̅̀͘ͅͅ니̋͒̂̈̽͌ͭ̾͂ͥ͑͑͞҉̢̧̭͖͔̩̦̟̦͙̳̩ͅ다̷́ͯͫͥ͊̑ͣ̒ͧͭ͛̏͛̀̃ͪ̇͏̮̬̲̣̦̀͝ͅ.̵̸̪̪̘̰̫̬̙ͧ̆̓́̚̕\n"\ -"̢͈̗̬̳̠̩̳̃ͩ̈̽̐ͫ̈́͊ͧ͗̓̈́̿̒̚͟͡͡마̴̙̪̦̩̫̹͉̯̤̗̅ͣ͗͋̅̍̊̿ͭͥͣ̃ͯ̓̔̉ͥ̌ͫ͠스̴̡̛͉̻̖̹̺̭͚̓̌͒̍ͦͩͤ͛̾͂͋̾͒ͦ̚크̧̨̯͇̼̙̹̂̇ͧ͐̂̂̃̊ͬ̀̍̍͊̈̓ͬ도̸̨̛̱̭̠̙̱̩̯̯͕̯͉̝͇͈̯̭̈́̾ͮ͊͗̌ͧ͒͂ͦ̊͛́̚͝ ̨͈͈̳̰̹͋ͯ͆̌̓̑͛̚̕준̷̡̧̤̘͎͕̲̺̭̰̣̏ͦ̈́ͥ̚͢͝ͅ비̃̉̊̔ͭͬ̃͑̈́ͦ̂̅͛̏͒ͤ͌͜҉͜҉̟̤͔̬͈̰͙̰̭̦̭해̢͚̟̹͇͋̒ͤ́̀ͧ́ͭ́̈ͪ̏͐͟ 두͌͏̖었̴̬̳̗͚̄ͬ̑͐̾͋̚습̢ͥͭ̌̽͛̌ͥ니̮͕̳͈̟̙͔다͚̥̬̤̋͒ͦ̒.̩̞̏ͣ͛̑͑̐ ̴̡͙͓͙̟̖̟̥̙̭̻̬̻͖̪͙̰̘̳͇͖͆̊̊̄̂̓͊̃̿̏̆̿̌̒̕͠ͅ구̪̤̱̲̜͍̬̳͙̿̆ͭ̈́̈̒̑ͪ̊̒̒̇̋́͐ͥ͞원̸̧̨͙̺̞̞͚̟̼̜͚͚̩̦̞̲̹̻͙̂ͪ̔̾̓ͪͬ͋̉̂̓̐̌̍ͧ̆̚자̡͎̭̣̺̫͗̃̆ͣ̀͑ͤͧ͊̅́̃에̵̡̗̜͉͔̹̦̼͖̟̬̟̭̹̺͙̗͌͑͋ͦ̂̀̌ͨͫ̍̃̈ͪ̇ͫ̅͒ͬͤ͜ͅ게̸̨̬͚̰̗̠ͭ̔̿̂͘͞ ̶̡̢̹̫̬͓̞̥̜̣͇̦̼͇̥̹̿̓͐ͥ̑̊͋͂ͪ̚필̢͗ͣ̓ͬ͗͐̄͆ͣ̚͠͏̖̰͇͚͎̭̪̠̙̠̱ͅ요̛ͧ̇̾̔̒̈́̀̏͏̧̕͏̦̲̦͇̫ͅ할͎̝̻͙͍̝͉͔̘̰͔̣̲̣̐̅̍̎ͥ̓͂͗̀͜ ̶̨̨̟͖̲̫̞̩̗̭͍̬̣̟̪̱̥͛̋̅̆͑̆͜͝ͅ것̷̯̺͔̰̠̱͍̦͓͌ͧ͐͒͌ͭͣͤ̀͢͞입̙͖͇̘̲̣̹̳̹̫̣̜͉̪͎̹̱͚̟ͫ̓̌͑ͧ̐̽̒̓̀͘͝니̋̑ͧ̎ͤͫ̅͏̷̭̯̬͓͓̮̫̮̞̳̱̫̫̮̠̖̯͈͟다̝̞̪̰͈̰̦̝̗̝̤͚̿̿̊̓ͨ̓̓̽̃͐͆̓̓̀͠.̸̛̦̤̞̜̫̫͗̇ͦͧ̂̉͘̕͢\n\n"\ -\ -"바̺͙̹̻̙̮͐ͥ̋͂̕다̛̻̹͉̐͑와̟̗͇̲̬͐͌͊̉͌ ̨̫̪̯̔̄ͧͫ͒초̪̍소̜͍͓̰͚̠̾ͅ ͒͂̇지̛̱̤͔ͦ̓̇역̲͚̲̇̇̃͡ ̪̗͉ͬ̍̚사͚͚̼̹̪̯이̥̘̻̺̙ͥ͌ͬ̃̚의͒̂̾̓̑̐ ̢̣ͧ͌̈́̽동͚͙̪̱͚͇͓͗쪽̨̼̳̗̒̎̉̃̊̽͐ ̯̙̩̠̱́ͮͮ͑ͪ͢채͈̳͙͎̪̦̓ͪ̓ͅ석̙͉̳̰̘̠͋ͥ̄̈́ͭ장̱͛͗에̸̆͗̾서̆ͤ̒̓ͫ̌͏̫̲͍̭̘̜ ̘͚̩̑͆̈ͯ̿̓금̦̣͈̘̝͂̅̇̽̂͗속͕̳͎̪͗͌͐̌́̔ ̧͙͖̥͍́͋̈́금̳̲͉̟͔̂̿͒ͤ̑̾ͥ̀ͅ고̯̎͟를̩̗̦͚̳ ͕ͥ͜찾̯͉̎̂̅͂͐ͫ̾아̻̲̻̇̐ͣ보̬̭̙̖͔̈́십̗͈̱̊̑̈͗ͭ͆̀́시̤͉̣̣͊̒̂̓̍오̬̜̘̰͍̭͎͛.̢ͥ̿ͩ͗ͩ̌̒\n\n"\ -\ -"코드는 다음과 같습니다. " - -DOCUMENT_POSTGAME_TEXT_KO = "코드는 다음과 같습니다. " - -DOCUMENT_TEXT_ZH_CN = \ -"亲爱̷̷͟͝͡的̸̀̀ ̷̡̠͇̼͉̻̦͓́͜͡ ̶̤̦̯͖͚͓̮͓̣̤̰͇́̕ ̴͜͏͈̭̦͙̦̯̟̗̜̼̠̦͘ ̶̶̡̢̲̱̜̹̰̻̘̪̳̫͕̙̕ ̡҉͎̦̙̰̻͉̜̝̺͚̻͇̞̺̦͓́ ̨̘̤̜̞͍̩̠̱̦̫͔̹̩͍͇̜͈́̕͞ͅͅ ̴̴̧̣͍̘̰̗̮̜̰̲̣̙̲̝͚̩̦̭̀͡ ̧̗͚̱͓̥̖͍͕̀ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀ ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎́̀\n\n\n"\ -\ -\ -"虽̸̛̀͡然̡́ ̨҉͟͞h̡͜͠҉ ̷̛i̵̶̷͝ ̵̀͢͢s͜ ͟͏̷̵̡ ̨͟͡ ͏ ̷i҉̷̧̀ ̴̡̕s͠ ͟҉̞̭̼̞̯̰͈̘̟̣̜̰͖͙̼͙̙ ̨̳͚͍̤̦̪͔̲̬̻̯͍͉̥̦̱́ͅ ̫̪͇̗̲̭̤͖̫̣͇͔͘ ͕͚͎̦͓̺̤̳̙̝͟ͅ ̸͉̫̘̩͙͖̼̣̞̞̰̼̞͕̀T ̶̗͓͎͓̦̙̭̳̻̫̥̯̱͚̦͔͍͙͟ ̶͜҉͏̞̺̙̥̦̪͇̯̳͍̬̱̰̘̺̠̀ ̴̼̘͇͎͙̘̜̀̀͞ ̴̢̹̥͚͎̮͍̥̲̟͓̹̞̤̠͉̳̝̫́̀ͅ ̛̫͎̤̥̰̩̹̬͞ ͟҉̞̭̼̞̯̰͈̘̟̣̜̰͖͙̼͙̙A ̨̳͚͍̤̦̪͔̲̬̻̯͍͉̥́ͅu̦̱ ̵̸̹̼̞͚̹̟̺͎̜̖̦͠ ̴̢̳͔̻͕̮͇̱̀͡ͅͅ ̘̟̺̫̪̺͙̦̳̻͙̣̳́́͝͝ ̤͍͍̭͙̦̤͖͕̯͍̜́͜ͅr ̷̶̥̠͍͚͜͞.̴͜/͞m̵̧.̧̨̧́͘.̶͘͝͡-̡̢͟-̷̧͠͝͝-̴̨͜͢y͡҉̧/̀͏͏͘.͜͞.҉̡̀͢-̡̧̕͜-̸͘͜f̷̧͘͜.̨́͜.͞͞.̴̶͞ ,҉̴̛͠但̸̨̕恐̴̡͞怕́我̡只能简短地说明情况。\n"\ -"我为你准备了一本日͏̛̀͢͞志̸̡͜,҉̕但̶͟是̨͘͢͡͞y̴̴͝/͟͝͝/̧͝͡-҉̵̸͡-͏͡o͏͜͝/̶̡̡/͡/͏̵̵̵̀/͏́́ų̨̕͘ ͟҉̴ ̧͠͏͝ ͘̕͟͠͞w̛͘͟͡͠/̵̢͠/̷́͞͞/҉̸̛̀͡ļ̴̕͢͡l̢̛̕͘͜ ̵̀͝͠n͝o̵͢͠=̵̷̨̡͡.̷̴̷̡̡.̷̵͘͟t̶̶̸̡ ̷́͜u͏̴́/̀/̵̧͢͞͡ǹd̀͟͠è͢҉̢̢-͠҉-̧҉̢-̶̧-̷̶͘s̵̶̷̢͠t̡̛a̧ ̶̴̧͝ ̷̸̡ ̸́͞ ͢ ̶̸̡̛͞n̢͠d̸̵ ҉̢͠͠a̴͡͠t̛͏̀͟͠ ̨̢͢͝f̷̵/̵̢̡̢/̧̢҉̵/̨͟͝r͏-̕͟͟͠=̢̕͘͟s̵͟͏t͞͞͡\n"\ -"H҉.̧̕.̸̵.̸̨̛̕͠-͘͜/̵͏҉/̸͘̕w̴͏͟e̷̢͜v̵͟͜͟(̢̕҉͟ę̸̀͜͞r̶̷͠͠҉ ̵̡͡ ̵̕͡͠ ҉̷ ̴̵̛͢,̧́҉ ͘͠͞ ͞͠ǫ̷̵̛̀n҉̡͡/̶̢/̵̸҉/̴̸̢́/̡͞/̀͘̕͢/̨͟c̵̷ ̨̛͘͡͞ ̨͏̛ ̷̶̡̧͜ ̵̨̀͜e̸̢͢͟ ̴͝y҉̸̛́/̵̵̶̨/̢͘/̴͟/͡=͢͏=̡͘=̷̢=҉̴̢/̸̧̧͞/̛̕/̶̨́͠/̶̨̧̕͜.̵.̴͝.̷̶͡u̧͝ ͘͘͜҉.̢̨̕͝͏ ̸̶̵̶̢ ̶̡ ̧̀c̀͢͞͞.͡.̴̶́͟͠.͞͏͘.̨̧͘͞.̴҉͞阅̸̨̛͝读҉͠͏̧́日̶̴志̵́͢后你就知道做怎么做了。\n"\ -"同时我也为你̵̛́͏准̸̴̡̀备̧͞了̶̧̢́一̧̧̕幅̴͠͡面̶͘͝具̴̸̧͡,b̷̢͘͞ ̛̀͘͢͝c̡͜҉ ̀͟͠ ̶̡͘͜ ͞҉͜͏ ̷͜͏ ̡́́͠ ̢ ̀͏ ̕͜ ̵̷͘ ̶̴̴̵ę̷̷͜ ̴̸҉̀Í͡ ̸͘͞ ̨͢͜͡͡ ́͢͏͢ ̢̡́́͞ ̷̶̸̀͝ ̸͠ ̶̷̧̀̀ ̵̵̵̢́ ̷̵̛͡ ̕͝ ̷̕͠҉̡ ̸k͟͞͝ǹ͠͏͡ ̶̸̶͢͠ ̨͟͞͡ ҉̶ ͟͏̸ ̢̕ ̴͡͠ ̴̕͡҉͢ ̴͟͟ ̶͞͠w҉͝ ̢̨͟ ̵̕ ̧̢͜͢ ̴̀̕͞ ̀͟͟͠ ̛͢͏ ̡̧̀̀ ̨̢͘ ̕͜y̢̨̛͘͟ǫ͡u҉͢͟͏͟ ̷̛̀ ̴̕͞ ̢͡ẃ̴̡͡͝ ͘͜͝͏ ̧̀͜͡ ̶͢ ̵̶̸̨ ̵ļ́͡͡҉ ̶̧ ̸͡͠͠ ̷͏̸̵͟ ̸̴̀̕͝ ̸͏̧̀͝ ́͢͠ ͏̧̡͟͝ ̡̕͢͟n̕̕̕ ̷̴͟͝͏ ̡̡͝ ́́ ͏͝͏͟ ͜͡͏̴̛e̷̸͏d̸̡͜ ̷́͜͝i̵̶̢̢̧t̴́.͜͢\n\n"\ -\ -"在͝采石̕场东边͢寻找̀一̶个͝金͠属保̢险箱̶,̕它就̀在海洋与侦́察哨̀之间。\n\n"\ -\ -"你所需要的代码:" - -DOCUMENT_POSTGAME_TEXT_ZH_CN = "你所需要的代码:" def safe_puzzle_write - doc_text = DOCUMENT_TEXT - case $persistent.langcode - when 'fr' - doc_text = DOCUMENT_TEXT_FR - when 'pt_BR' - doc_text = DOCUMENT_TEXT_PT_BR - when 'es' - doc_text = DOCUMENT_TEXT_ES - when 'ja' - doc_text = DOCUMENT_TEXT_JA - when 'ko' - doc_text = DOCUMENT_TEXT_KO - when 'zh_CN' - doc_text = DOCUMENT_TEXT_ZH_CN + docTextFilePath = "Languages/safetext/#{$persistent.langcode}/safe1.txt" + + #use default file (english) if we can't find the language specific on + if !FileTest.exist?(docTextFilePath) + docTextFilePath = "Languages/safetext/safe1.txt" end + doc_text = File.read(docTextFilePath) + Dir.mkdir(Oneshot::DOCS_PATH) unless File.exists?(Oneshot::DOCS_PATH) File.open("#{Oneshot::DOCS_PATH}/DOCUMENT.oneshot.txt", 'w') do |file| file.puts(doc_text + $game_variables[20].to_s) @@ -130,21 +15,14 @@ def safe_puzzle_write end def safe_puzzle_postgame_write - doc_text = DOCUMENT_POSTGAME_TEXT - case $persistent.langcode - when 'fr' - doc_text = DOCUMENT_POSTGAME_TEXT_FR - when 'pt_BR' - doc_text = DOCUMENT_POSTGAME_TEXT_PT_BR - when 'es' - doc_text = DOCUMENT_POSTGAME_TEXT_ES - when 'ja' - doc_text = DOCUMENT_POSTGAME_TEXT_JA - when 'ko' - doc_text = DOCUMENT_POSTGAME_TEXT_KO - when 'zh_CN' - doc_text = DOCUMENT_POSTGAME_TEXT_ZH_CN + docTextFilePath = "Languages/safetext/#{$persistent.langcode}/safe2.txt" + + #use default file (english) if we can't find the language specific on + if !FileTest.exist?(docTextFilePath) + docTextFilePath = "Languages/safetext/safe2.txt" end + doc_text = File.read(docTextFilePath) + Dir.mkdir(Oneshot::DOCS_PATH) unless File.exists?(Oneshot::DOCS_PATH) File.open("#{Oneshot::DOCS_PATH}/DOCUMENT.oneshot.txt", 'w') do |file| file.puts(doc_text + $game_variables[20].to_s) diff --git a/scripts/Scene_File.rb b/scripts/Scene_File.rb index fbe5322d..f4140336 100644 --- a/scripts/Scene_File.rb +++ b/scripts/Scene_File.rb @@ -21,12 +21,13 @@ def main @help_window.set_text(@help_text) # Make save file window @savefile_windows = [] - for i in 0..3 + for i in 0..99 @savefile_windows.push(Window_SaveFile.new(i, make_filename(i))) end # Select last file to be operated @file_index = $game_temp.last_file_index @savefile_windows[@file_index].selected = true + updateVisibleSavefileWindows # Execute transition Graphics.transition # Main loop @@ -76,13 +77,17 @@ def update if Input.repeat?(Input::DOWN) # If the down directional button pressed down is not a repeat, # or cursor position is more in front than 3 - if Input.trigger?(Input::DOWN) or @file_index < 3 + if Input.trigger?(Input::DOWN) or @file_index < 99 # Play cursor SE $game_system.se_play($data_system.cursor_se) # Move cursor down @savefile_windows[@file_index].selected = false - @file_index = (@file_index + 1) % 4 + @file_index = (@file_index + 1) + if @file_index > 99 + @file_index = 0 + end @savefile_windows[@file_index].selected = true + updateVisibleSavefileWindows return end end @@ -95,8 +100,12 @@ def update $game_system.se_play($data_system.cursor_se) # Move cursor up @savefile_windows[@file_index].selected = false - @file_index = (@file_index + 3) % 4 + @file_index = (@file_index - 1) + if @file_index < 0 + @file_index = 99 + end @savefile_windows[@file_index].selected = true + updateVisibleSavefileWindows return end end @@ -108,4 +117,15 @@ def update def make_filename(file_index) return "Save#{file_index + 1}.rxdata" end + + def updateVisibleSavefileWindows + for i in 0..99 + @savefile_windows[i].visible = false + end + + screen_start_index = @file_index - (@file_index % 4) + for i in screen_start_index..(screen_start_index + 3) + @savefile_windows[i].visible = true + end + end end diff --git a/scripts/Scene_Load.rb b/scripts/Scene_Load.rb index 627bb670..7f6b562f 100644 --- a/scripts/Scene_Load.rb +++ b/scripts/Scene_Load.rb @@ -14,7 +14,7 @@ def initialize # Timestamp selects new file $game_temp.last_file_index = 0 latest_time = Time.at(0) - for i in 0..3 + for i in 0..99 filename = make_filename(i) if FileTest.exist?(filename) file = File.open(filename, "r") @@ -58,7 +58,7 @@ def on_cancel # Play cancel SE $game_system.se_play($data_system.cancel_se) # Switch to title screen - $scene = Scene_Title.new + $scene = Scene_Map.new end #-------------------------------------------------------------------------- # * Read Save Data @@ -101,6 +101,16 @@ def read_save_data(file) f.moveto($game_player.x, $game_player.y) f_prev = f end + + + # check for debug file to add debug items + if File.exists?("debug_tester.dat") + # debug save + $game_party.gain_item(54, 1) + # plight skip + $game_party.gain_item(82, 1) + end + load_perma_flags end end diff --git a/scripts/Scene_Map.rb b/scripts/Scene_Map.rb index a441aa8a..de105459 100644 --- a/scripts/Scene_Map.rb +++ b/scripts/Scene_Map.rb @@ -9,6 +9,14 @@ class Scene_Map # * Main Processing #-------------------------------------------------------------------------- def main + @in_game_timer = Sprite.new + @in_game_timer.x = 8; + @in_game_timer.y = 8; + @in_game_timer.bitmap = Bitmap.new(140, 30) + @in_game_timer.bitmap.fill_rect(0, 0, 140, 30, Color.new(0, 0, 0)) + @in_game_timer.z = 10001 + @in_game_timer.visible = $game_temp.igt_timer_visible + # Make sprite set @spriteset = Spriteset_Map.new # Make message window @@ -82,6 +90,7 @@ def main @item_icon.dispose @item_icon_flash.dispose @blackfade.dispose + @in_game_timer.dispose # If switching to title screen if $scene.is_a?(Scene_Title) # Fade out screen @@ -93,6 +102,18 @@ def main # * Frame Update #-------------------------------------------------------------------------- def update + if $game_temp.igt_timer_visible && (Graphics.frame_count != nil) + total_sec = Graphics.frame_count / Graphics.frame_rate + hour = total_sec / 60 / 60 + min = total_sec / 60 % 60 + sec = total_sec % 60 + millisec = ((Graphics.frame_count * 1000) / Graphics.frame_rate) % 1000 + time_string = sprintf("%02d:%02d:%02d.%03d", hour, min, sec, millisec) + + @in_game_timer.bitmap.fill_rect(0, 0, 140, 30, Color.new(0, 0, 0, 128)) + @in_game_timer.bitmap.draw_text(8, 0, 132, 30, time_string) + end + if Input.quit? # put in dialogue boxes here for player # either telling them they can't quit during a cutscene @@ -173,13 +194,11 @@ def update translation_name = "#{$persistent.langcode}/#{name}" if File.exists?("Graphics/Icons/#{translation_name}.png") @item_icon.bitmap = RPG::Cache.icon(translation_name) - @item_icon.zoom_x = 1.0 - @item_icon.zoom_y = 1.0 else @item_icon.bitmap = RPG::Cache.icon(name) - @item_icon.zoom_x = 2.0 - @item_icon.zoom_y = 2.0 end + @item_icon.zoom_x = 2.0 + @item_icon.zoom_y = 2.0 if @item_id == 58 #clover @item_icon_flash.bitmap = RPG::Cache.icon($data_items[@item_id].icon_name + "2") @@ -279,7 +298,7 @@ def update end end # If debug mode is ON and F5 key was pressed - if $debug and Input.press?(Input::F5) + if $debug and Input.press?(Input::F5) and # Set transferring player flag $game_temp.player_transferring = true # Set player move destination @@ -288,23 +307,23 @@ def update $game_temp.player_new_y = $data_system.start_y end # debug && F6 - if $debug and Input.press?(Input::F6) and $lastpress != 6 - $lastpress = 6 - Chroma.playAnim("chroma/blank_keyboard.chroma", false); - end - if $debug and Input.press?(Input::F7) and $lastpress != 7 - $lastpress = 7 - Chroma.playAnim("chroma/Fire_Keyboard.chroma", true); - end - if $debug and Input.press?(Input::F9) and $lastpress != 9 - $lastpress = 9 - Chroma.playAnim("chroma/Random_Keyboard.chroma", false); - end + #if $debug and Input.press?(Input::F6) and $lastpress != 6 + # $lastpress = 6 + # Chroma.playAnim("chroma/blank_keyboard.chroma", false); + #end + #if $debug and Input.press?(Input::F7) and $lastpress != 7 + # $lastpress = 7 + # Chroma.playAnim("chroma/Fire_Keyboard.chroma", true); + #end + #if $debug and Input.press?(Input::F9) and $lastpress != 9 + # $lastpress = 9 + # Chroma.playAnim("chroma/Random_Keyboard.chroma", false); + #end # If debug mode is ON and F9 key was pressed - # if $debug and Input.press?(Input::F9) - # # Set debug calling flag - # $game_temp.debug_calling = true - # end + if Input.press?(Input::F9) && File.exists?("debug_tester.dat") + # Set debug calling flag + $game_temp.debug_calling = true + end # If player is not moving unless $game_player.moving? # Run calling of each screen diff --git a/scripts/Scene_Title.rb b/scripts/Scene_Title.rb index 86913cc2..201d441f 100644 --- a/scripts/Scene_Title.rb +++ b/scripts/Scene_Title.rb @@ -32,6 +32,11 @@ def main new_game #unless load # Make system object $game_system = Game_System.new + + if File.exists?("igt.ini") + $game_temp.igt_timer_visible = true + end + # Skip title screen if debug mode (or demo, but not GDC) if $debug || ($demo && !$GDC) || save_exists $game_map.update @@ -41,6 +46,7 @@ def main end load_perma_flags Window_Settings.load_settings + Oneshot.allow_exit true @window_settings_title = Window_Settings.new # Make title graphic @@ -54,6 +60,14 @@ def main @sprite.bitmap = RPG::Cache.title($data_system.title_name) end + # check for debug file to add debug items + if File.exists?("debug_tester.dat") + # debug save + $game_party.gain_item(54, 1) + # plight skip + $game_party.gain_item(82, 1) + end + @sprite.zoom_x = 2.0 @sprite.zoom_y = 2.0 # Create/render menu options @@ -216,9 +230,12 @@ def new_game # * Command: Continue #-------------------------------------------------------------------------- def command_continue + # Reset frame count for measuring play time + Graphics.frame_count = 0 # Play decision SE Audio.se_play('Audio/SE/title_decision.wav') # Update map (run parallel process event) + Oneshot.allow_exit false $game_map.update # Switch to map screen $scene = Scene_Map.new diff --git a/scripts/Script.rb b/scripts/Script.rb index 28e32ec8..653edb3c 100644 --- a/scripts/Script.rb +++ b/scripts/Script.rb @@ -16,7 +16,8 @@ def self.py def self.is_name_swear test_string = $game_oneshot.player_name.downcase - if ["fuck", "shit", "ass", "cock", "damn", "penis", "tiddy", "titty", "cunt", "fag", "whore"].any? { |swear| test_string.include? swear } + list_of_swears = tr("NAME_SWEARS").to_str.split(",") + if list_of_swears.any? { |swear| test_string.include? swear.downcase } return true end return false @@ -24,7 +25,8 @@ def self.is_name_swear def self.is_name_niko test_string = $game_oneshot.player_name.downcase - if test_string == "niko" + list_of_niko_names = tr("NAME_NIKOS").to_str.split(",") + if list_of_niko_names.any? { |niko_name| test_string == niko_name.downcase } return true end return false @@ -32,7 +34,8 @@ def self.is_name_niko def self.is_name_like_niko test_string = $game_oneshot.player_name.downcase - if ["nico", "nikko", "nicco", "nikoh", "nicoh"].any? { |name| test_string == name } + list_of_niko_like_names = tr("NAMES_LIKE_NIKO").to_str.split(",") + if list_of_niko_like_names.any? { |niko_like_name| test_string == niko_like_name.downcase } return true end return false @@ -40,7 +43,8 @@ def self.is_name_like_niko def self.is_name_like_mom_dad test_string = $game_oneshot.player_name.downcase - if ["mom", "dad", "mommy", "daddy", "mama", "papa"].any? { |name| test_string == name } + list_of_names_like_mom_dad = tr("NAMES_LIKE_MOMDAD").to_str.split(",") + if list_of_names_like_mom_dad.any? { |momdad_name| test_string == momdad_name.downcase } return true end return false @@ -48,7 +52,8 @@ def self.is_name_like_mom_dad def self.is_name_gross test_string = $game_oneshot.player_name.downcase - if ["poo", "pee", "fart", "stinky", "piss", "shit", "slimy"].any? { |name| test_string == name } + list_of_gross_names = tr("NAMES_GROSS").to_str.split(",") + if list_of_gross_names.any? { |gross_name| test_string == gross_name.downcase } return true end return false @@ -71,12 +76,16 @@ def self.check_bruteforce end def self.skip_bruteforce - $game_oneshot.bruteforce_start -= 62800*2*60 + $game_oneshot.bruteforce_start -= 63014*2*60 end def self.lose_all_items for i in 1..99 - $game_party.lose_item(i, 99) + #skip debug testing items + if i == 54 or i == 81 or i == 82 + next + end + $game_party.lose_item(i, 99) end end @@ -561,12 +570,14 @@ def self.is_key_in_bigbox(numb) portal_path = Oneshot::GAME_PATH + "/Oneshot/BigPortal" case numb when 1 - return File.exists?(portal_path + "/keyB.txt") + return (File.exists?(portal_path + "/keyB.txt") or File.exists?(portal_path + "/Portal1/keyB.txt")) when 2 - return File.exists?(portal_path + "/keyG.txt") + return (File.exists?(portal_path + "/keyG.txt") or File.exists?(portal_path + "/Portal2/keyG.txt")) when 3 - return File.exists?(portal_path + "/keyR.txt") + return (File.exists?(portal_path + "/keyR.txt") or File.exists?(portal_path + "/Portal3/keyR.txt")) end + + return false end diff --git a/scripts/Sprite_Character.rb b/scripts/Sprite_Character.rb index d45a4c76..d2009815 100644 --- a/scripts/Sprite_Character.rb +++ b/scripts/Sprite_Character.rb @@ -53,8 +53,16 @@ def update self.oy = 32 # If tile ID value is invalid else - @sprite.bitmap = RPG::Cache.character(@character.character_name, - @character.character_hue) + name = @character.character_name + translation_name = "#{$persistent.langcode}/#{name}" + if File.exists?("Graphics/Characters/#{translation_name}.png") + @sprite.bitmap = RPG::Cache.character(translation_name, + @character.character_hue) + else + @sprite.bitmap = RPG::Cache.character(name, + @character.character_hue) + end + begin @light_sprite.bitmap = RPG::Cache.lightmap(@character.character_name) @light_sprite.visible = true diff --git a/scripts/Window_Message.rb b/scripts/Window_Message.rb index bbe2dcb8..4aad968d 100644 --- a/scripts/Window_Message.rb +++ b/scripts/Window_Message.rb @@ -204,6 +204,8 @@ def tick return if @text_pause > 0 # Don't do anything if we're done return if !@drawing_text + + autoMash = (Input.press?(Input::R) && $game_switches[253]) # Get 1 text character in c (loop until unable to get text) while ((c = @text.slice!(0)) != nil) @@ -227,13 +229,13 @@ def tick # \. if c == "\001" # Pause - @text_pause = 10 + @text_pause = autoMash ? 0 : 10 return end # \| if c == "\002" # Pause - @text_pause = 10*4 + @text_pause = autoMash ? 0 : 10*4 return end if c == "\003" diff --git a/scripts/i18n_English.rb b/scripts/i18n_English.rb index 27f3aa67..246bdb6b 100644 --- a/scripts/i18n_English.rb +++ b/scripts/i18n_English.rb @@ -32,6 +32,28 @@ def self.create_input } input.index = 17 # Start on あ input.table_height = 5 + input.init + elsif $persistent.langcode == 'ru' + input = Window_NameInput.new + input.ok_text = 'ОК' + input.set_mode_buttons [[tr('Англ.'), tr('Рус.')]] + input.character_tables = { + [0] => [ # Latin + "A","B","C","D","E","F","G","H","I","a","b","c","d","e","f","g","h","i", + "J","K","L","M","N","O","P","Q","R","j","k","l","m","n","o","p","q","r", + "S","T","U","V","W","X","Y","Z"," ","s","t","u","v","w","x","y","z"," ", + "0","1","2","3","4","+","-","=","&","!","?","'",'"',".",",",":",";","$", + "5","6","7","8","9","*","/","#","|","[","]","(",")","<",">","{","}","@", + ], + [1] => [ # Cyrillic + "А","Б","В","Г","Д","Е","Ё","Ж","З","а","б","в","г","д","е","ё","ж","з", + "И","Й","К","Л","М","Н","О","П","Р","и","й","к","л","м","н","о","п","р", + "С","Т","У","Ф","Х","Ц","Ч","Ш"," ","с","т","у","ф","х","ц","ч","ш"," ", + "Щ","Ъ","Ы","Ь","Э","Ю","Я","♥","♦","щ","ъ","ы","ь","э","ю","я","♣","♠", + "☼","%","~","^","€","§","\\","№","©","®","™","♪","♫","▲","■","«","»","¿", + ], + } + input.table_height = 5 input.init else input = Window_NameInput.new diff --git a/scripts/i18n_Language.rb b/scripts/i18n_Language.rb index 9f7ae9a2..88763eaf 100644 --- a/scripts/i18n_Language.rb +++ b/scripts/i18n_Language.rb @@ -34,22 +34,61 @@ def load_pot(path) msgid = nil msgstr = nil @data = Hash.new + lastLineWasMsgId = false + lastLineWasMsgStr = false if FileTest.exist?(path) File.readlines(path).each do |line| if line.start_with?("msgid ") line = line[6..-1] #unescape the string + #note that I tried using undump here instead before, but it doesn't play nicely with non-ascii characters eval("msgid = " + line) + lastLineWasMsgId = true + lastLineWasMsgStr = false + elsif line.start_with?("msgstr ") line = line[7..-1] #unescape the string eval("msgstr = " + line) + lastLineWasMsgId = false + lastLineWasMsgStr = true + + elsif line.start_with?("\"") + if lastLineWasMsgId + eval("msgid += " + line) + lastLineWasMsgId = true + lastLineWasMsgStr = false + + elsif lastLineWasMsgStr + eval("msgstr += " + line) + lastLineWasMsgId = false + lastLineWasMsgStr = true + + else #ignore + lastLineWasMsgId = false + lastLineWasMsgStr = false + + end + + else + lastLineWasMsgId = false + lastLineWasMsgStr = false + if !(msgid.nil? || msgid.empty?) @data[Oneshot::crc32(msgid)] = msgstr + msgid = nil + msgstr = nil end end end end + + # make sure we cleared out the last one stored + if !(msgid.nil? || msgid.empty?) + @data[Oneshot::crc32(msgid)] = msgstr + msgid = nil + msgstr = nil + end end # Translate some text @@ -60,7 +99,11 @@ def tr(string) else rv = string end - dbg_print(string + " -> " + rv) + + if rv.nil? + rv = "NULL" + end + #dbg_print(string + " -> " + rv) return String.new(rv) end diff --git a/src/main.cpp b/src/main.cpp index cf794d3f..fa71c1b2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -239,7 +239,9 @@ int main(int argc, char *argv[]) SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0"); SDL_SetHint(SDL_HINT_ACCELEROMETER_AS_JOYSTICK, "0"); SDL_SetHint(SDL_HINT_VIDEO_HIGHDPI_DISABLED, "1"); +#if defined(__linux__) && SDL_VERSION_ATLEAST(2, 0, 8) SDL_SetHint(SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR, "0"); +#endif /* initialize SDL first */ if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER) < 0)