The only officially supported mods for the game at time of writing are for translations as enclosed here. for distributing stuff like translations, attach your own READ ME in the language of your choosing for players to read because this READ ME is for translators (you?). To begin translating, open up the game (V0.6.2.4.2 or later), open the settings in the main menu and scroll down until you see the translation tools button. Double click. Open "export game text data" and "generate translation file" and it'll give you everything you need. In the same folder as the game's .exe and .pck file, have a folder named "mods". In this folder, there should be a folder named "translation". The names are important and may be case sensitive! The game will always use the latest DATE or VERSION contained within the filename of the "ef." file. It must always start "ef." and end ".json". For example, ef.0.7.0.json is prioritized over ef.0.6.0.json, ef.2023.11.11.json is prioritized over ef.0.6.0.json. The game checks for the highest number between each decimal when it loads. To override this you can simply name it something like "ef.9999.json". It ignores everything besides numbers and decimals. The date is important because if you are a translator KEEP AN UNEDITED COPY OF THE ORIGINAL ef. FILE! This is because a tool will be able to compare the original ef. file with any future ef. files and tell you what has changed. This will make your life so much easier when the game updates. To change fonts there must be a file called " font_parameters.json". I may have left the DEFAULT fonts in there. Changing these will not do anything, they're just there for reference of what fonts are being changed. "font_speech_default" normally uses Osaka Regular-Mono which may work for Japanese script but generally all fonts must be replaced if you're using a non-romanized script. There should be no problem loading old translation files into newer versions. It'll just be missing some text. Please be aware that the length of text matters. If text is too long or too short compared to the original text it may end up looking weird. This is not vital but it's worth keeping in mind. ------------- Each section of the translations: You will see "dictionary" and "array". Dictionary: Never change the key. The format is, "KEY":"OUTPUT". Translate the OUTPUT. For an array, there is no key, simply change the whole thing as you see fit but do not remove the commas. 1. All .json keys are related to specific conversations and may require various corruptions and choices to see all routes of. load/ conversations appear when you first load the game and hit start. quip/ conversations appear when right clicking girls. You may sometimes see some lines like "9999": "aaaa", these don't mean anything they're just there in the original files as templates for extending existing script. Inside the .ef file you will find key.CHOICE which represents every choice for that key and should be translated, and key.char which gives context and does not need translating, key.char has ABSOLUTELY NO EFFECT on the game! Only key and key.CHOICE do. If it mentions conditions, that means that if the first condition is met, it will divert to [key.1], or [key.2] for the second condition, so forth. It prioritizes the first condition. Note that these are arrays with strings in them and sometimes integers. For example, ["text"] and ["text",0,"text"]. If you see an integer, all of the integers thus far are the player's name, so put them where the player's name would be. 2. "attacknames" are names that appear when a character uses a skill, when you are hit by a skill or on the wood skill 'cards'. 3. "describecorruptiondict" appears when you look at a corruption in your inventory. 4. "icondescribearray" appears when you hover over skills with icons. THIS IS AN ARRAY [], it does not have "horns5:" style keys unlike the {} entries. 5. "event_messages" are messages sent from many places that usually display on the top-right and the draggable slab on top. 6. "misc_ui" are some various scattered details. Discard and Remove appear on skill tiles when right-clicking. 7. "preview_words"are the words that appear on top of your mouse to show where you'll move. If you see "\n" this is ENTER or a line break, you'll see this in preview_names as a way to stack words vertically. 8. "curseditemdescribedict", describes some passive items. enum{CLIMBBUFF=-9,WOLFPELT=-10,COWBELL=-11,PAWS=-12,WISHRING=-13,FOXPENDANT=-14,NORMALPAWS=-15} ClimbBuff is an old item and shouldn't show up. I'm not sure WishRing actually appears in inventory but it could. Normalpaws appear in Route A11, paws appear in 0-2 Pussy Galore. 9. "racearray": names of races, may show up to describe corruption states. raceclassarray: name of each class you get from losing to enemies. 10. "bodypartdict": parts of the body, shows up to describe corruptions on your status tab. You'll notice armright becomes arms because the in-game reference for arms is "armright". 11. "debuffdescriptionarray": describes the debuffs that appear in the icons above the hotbar. may show on status screen. 12. "debuffidentifyarray": names for the debuffs. 13. "debuffidentifynegativearray": names for Flinch and Knockback, debuffs that tend to be more temporary or special in nature. 14. "mainmenu": appears on main menu. It's okay if you want to add a mention that the discord speaks English and not the language you're translating to. Watch out for VAR[NUM] and \n, remember these are linebreaks and variables that are added. 15. "settingstextdict": Text for the settings and options menu. 16. "maptext": Text for the overworld map and its UI. 17. "specialmenu": for the menus that appear the first time you open the game (must delete config file to see it) and when you enter/leave fullscreen mode on PC. 18. "chaptertext": appears in the middle of the screen when you first enter certain stages of the game. ------------- AUTOMATIC CHANGELOG: This is a tool set up within the game in the main menu settings that takes two translation file inputs. These files must have the "ef.20..." format and it ignores all non-number-decimal characters beyond "ef." It will automatically find the oldest and newest files. Make sure these are both the original english. Click the buttons left/right to scroll through possible files. It will create a file in mods/translation called NUMBER1toNUMBER2 It contains: "ADDED_TO_NEW_DICTIONARY": keys that were not in the old dictionary but are in the new one. "VALUE_CHANGED_FROM_OLD_TO_NEW": keys that do not have the same value as they did before. REMOVED_FROM_OLD_DICTIONARY": keys that were in the old dictionary but are no longer in the new one. Use this as a checklist of what you need to do to update a previously fully translated file to the current game version. -------------