-
Notifications
You must be signed in to change notification settings - Fork 0
Your first Entry
This following section will cover all the basics on how to create a new entry for NewSafetyHelp.
But first a small section on how to set up a new entry.
It is assumed that the mod is firstly correctly installed.
That means MelonLoader installed and the NewSafetyHelp ".dll" file moved to the mod's folder.
After this, launch the game at least once. This will ensure that it is correctly setup and all the necessary files are created.
The game's folder can be opened via Steam (Right-click the game and choose "Manage" and then "Browse local files") or by pressing the folder icon in the MelonLoader Installer.
Here, navigate to UserData:

A folder named NewSafetyHelp should be here, if not, launch the game once. The inside of this folder should be empty if no extra entries were installed.

Here we can create any new folder which can hold any amount of entries. It is required to create a folder for it, but you are free to name it anything.
Step inside the newly created folder and create a new text file:

If you have file extensions shown, replace the ".txt" to ".json" which is a format that NewSafetyHelp understands. A human-readable format.
If you cannot see the ".txt" either enable it under Folder Options (Recommended) or open the file and make sure to save it as a ".json" file by extending it to the end of the file.
Incase its hidden for you, the image shows where you can disable hiding the file extension in Folder Options:

After converting it to a JSON file, it should look like this:

Open it up with your preferred editor and insert the following default layout for JSON Files (The curly brackets are required):
{
"monster_name": "A monster name",
"monster_description": "A monster description",
"monster_portrait_image_name": "image_of_a_monster.png"
}After this, save the file and you have finished the setup. Next up, we will cover how to modify the entry.
Now that we have a simple file containing the basic structure of an entry, we can start working on it. Please note, that technically all values are optional, though not including something may have unexpected or unwanted behavior.
As it can be seen, all options are separated by a line followed with a comma value. As it is required to follow the JSON Format (If interested: JSON Tutorial) all texts (strings) must be contained inside two double quotes, while numbers do not use any double quotes.
If you wish to add a new line or option, just append it below the lowest line and make sure that it stays between the curly brackets and that the previous line includes a comma to separate the lines. For now, ignore what it exactly means, but notice that the previous line now has a comma at the end followed by a new line:
{
"monster_name": "A monster name",
"monster_description": "A monster description",
"monster_portrait_image_name": "image_of_a_monster.png",
"monster_audio_clip_name": "monster_audio_clip.mp3"
}Now, let us analyze what each line denotes.
"monster_name": "A monster name",The option "monster_name" denotes how the entry/monster should be named. The option is then separated by a colon ":" followed by the name of the entry in double quotes. For this case, we have as the name "A monster name", which can be renamed to any other name.
"monster_description": "A monster description",Just as the name, we can also provide a description. The description for standard entries in the game are written in Rich Text Markup, so if you wish to color or change any part of the description, visit the official documentation.
For this example, let us see an example template how the game formats it's description:
"monster_description": "<b>DESCRIPTION:</b>\n\nExample Description. \n\n<b>DANGER:</b>\n\nExample Danger Description. \n\n<b>SOLUTION:</b>\n\nExample Solution Description.",Here, all sections are divided by a \n\n<b>SECTION_NAME:</b>\n\n attribute string, anything followed by it will appear as if it belonged to a section. The "\n" denotes a newline, while the <b> TEXT BETWEEN </b> tags make the text in between the tags bold.
For more tags, see the Rich Text Markup documentation.
We can also provide an image and an audio clip for our entry:
"monster_portrait_image_name": "image_of_a_monster.png",
"monster_audio_clip_name": "monster_audio_clip.mp3"For these to work, the file names must also be included in the same folder ass the JSON file (Must be in the same folder):

In the JSON file, the name of the file with its extension must be provided. This ensures that they are correctly imported. Not all formats are supported, but most modern and most used are. See the Unity Documentation for a list if it is failing for you. (Audio Types, Image and other File Types)
Excluding the audio and the image, you should see a new entry appear in the game that looks like this (Renamed to "Random Name" for example):

The game also supports some accessibility features that automatically hides any image that may contain a phobia.
It is best to also allow the game to do it for our entry if present. Every phobia is set to false by default, so no need to mention every single one.
Here is a list of all available phobias and how to enable them. They can hold either the value true or false, which is different to the strings (text) we previously had which required the double quotes, Booleans (true or false) do not require them.
"spider_phobia": true,
"darkness_phobia": true,
"dog_phobia": true,
"holes_phobia": true,
"insect_phobia": true,
"watching_phobia": true,
"tight_space_phobia": trueThis should cover how a simple entry works, for the next section, let us expand it and use more features.
We can not only create a new entry and be happy to see it, but we can even make a caller for it.
For this to work
- Home
- Installation
- Your first Entry
- Your first Custom Campaign
-
Customize your Custom Campaign
- Extra campaign customization
- Adding custom emails
- Adding custom videos
- Adding custom music
- Adding intermission music
- Adding custom ringtones
- Adding custom text files
- Adding custom cutscene
- Adding custom themes
- Accuracy Callers
- Advanced Accuracy Checks and Caller Requirements
- Adding custom modifiers
- Advanced Settings
- Documentation