Skip to content

Your first Custom Campaign

Julian Koberg edited this page Jul 28, 2025 · 129 revisions

Your first Custom Campaign

This following section will cover all the basics on how to create a custom campaign for NewSafetyHelp.
Please be aware, that this will require some basic entry creation knowledge.
I will be skipping the syntax and installation in this custom campaign part.
This section will not cover creating custom entries / monsters, but will tell you how to attach it to a custom campaign.
So, if you haven't made your first entry yet, be sure to check it out first.

Creating the custom campaign

We will first see how the custom campaign is defined and then how to add entries, calls, emails and videos to it.
Similar to how we created a simple entry, we also have to create a .json file in a folder. This will contain the options and settings for your custom campaign.

A simple custom campaign should look like this (Don't forget the braces {}, commas ,, the quotation marks "" and the colon :):

{
	"custom_campaign_name": "Custom Campaign Name",

        "custom_campaign_desktop_name": "Campaign Desktop Name",

        "custom_campaign_icon_image_name": "campaign_desktop_icon.png",

	"custom_campaign_days": 5
}

This defines the minimum to create a custom campaign. The first line:

"custom_campaign_name": "Custom Campaign Name"

Is the internal name of the campaign. It is best to not reuse the same internal name as others, as this could lead to mix-ups. This is also the name that entries, videos, emails, and callers will need to be associated with the correct custom campaign.

The line:

"custom_campaign_desktop_name": "Campaign Desktop Name"

Provides the name that is shown on the desktop, if you wish to have a name similar to an existing custom campaign, provide it here, as it won't interfere.

The remaining lines:

"custom_campaign_icon_image_name": "campaign_desktop_icon.png",

"custom_campaign_days": 5

The first line defines the icon that shows up on the desktop to switch into your custom campaign.
And the second line defines how long your campaign should go for. Please be aware that this merely a way for the game to be able to save your progress, so you don't need to use all the days. However, if you are going to have more days than provided in the file, it will not be able to save your custom campaign progress.

If everything worked correct, then you should be able to see this on the desktop when you start the game:

image

Testing and Debugging

Before learning how to add things to the custom campaign, it's best to learn some options to make testing easier. And how to identify problems.
First, how to always enable some default programs on the desktop.

"entry_browser_always_active": true
"scorecard_always_active": true
"artbook_always_active": true
"arcade_always_active": true

These will make the programs always be unlocked while in the custom campaign. This may be helpful if you wish to see your scorecard or all entries.
If you enable the entry browser, you see all your custom entries without needing to start a day.

If you are testing the different calls, it is helpful to be able to skip the waiting time. As such, you can use the following option:

"always_show_skip_call_wait_time": true

Now, if your custom campaign or any attached things do not work, always be sure to check the console for any errors. An example of a syntax problem in your file is:

image

As you can see, the mod was unable of reading a file. This could be due to a comma or quotation mark missing. So make sure to look for any red errors in the console if things do not work.

Another type of error are warnings. These tell you that something is missing or wrongly provided. These don't necessarily mean that something is wrong, but that something could go wrong or unexpected if not fixed. An example is providing a conflicting option, such as having a warning caller (A caller calls if you get too many answers wrong) and wanting the warning caller to also be a normal caller at the same time.
An example for this:

image

If you ever see your game stops working at some point, like after the 4th caller, and you don't see any errors or even warnings, it could be a silent fail.

This could mean that you may be missing some caller after the current one. Just make sure you aren't forgetting something.

If everything worked fine (no red errors) but it isn't working. Then don't hesitate to ask others or even me for help.

Custom Campaign Basic Features

Just as the main campaign uses existing videos, emails and entries, we might wish to include or exclude them.
Per default, all emails and videos are removed, but not the entries. But if you wish to remove the default entries or include the emails and videos again, you can use the following options:

"custom_campaign_remove_main_entries": true 
"remove_default_emails": false
"disable_main_campaign_videos": false

In the main campaign, if you get too many answers you get a warning call and if you continue getting answers wrong, then you get a game over screen. You may want to adjust the threshold or set how many callers must happen until a warning appears.

For adjusting the game over and warning threshold, you can use:

"custom_campaign_gameover_threshold": 60
"custom_campaign_warning_threshold": 60

The default is 60. Which means that if you have less than or equal to 60 % of calls wrong, it will then trigger a warning and if it is the end of the day it will also trigger the game over.

To set how many calls with entries attached are required until a warning can appear, one must do it in the following way:

"custom_campaign_threshold_amount": [3, 2, 3, 4, 5, 7] 

The first number in the list is for the first day, the second number is for the second day, etc…
So if your campaign has 5 days, you would need to pass 5 numbers in the list. As an example, the first number “3” means that for the warning to appear, one must see at least 3 callers with entries. This does not mean you need to get 3 wrong, but the 3 can be a mixture of correct and wrongly answered callers. What matters is the warning threshold we provided before. If the 3 callers are the only callers, and we get 2 wrong and 1 correct, it will cause the warning caller to trigger (at 60% threshold) after the third caller.

After this, now let's see the perhaps more interesting option. Ending videos! One can now provide a video to play instead of the default after either a game over or normal game ending.

"custom_campaign_end_cutscene_video_name": "cat_dancing.mp4",

"custom_campaign_gameover_cutscene_video_name": "cat_punching_you.mp4"

All you have to do is provide the name and the file inside the same folder. As a recommendation, if you wish to share your mod, make sure your files aren't too large.

That would cover all the basic functionality to have a basic campaign.
The next section will cover more customization for the custom campaign, but it is not needed.
If you wish to learn how to add emails, callers, videos and attach your custom entries into the custom campaign instead, you can skip the next section.

More custom campaign customization

To fit your theme better, one may want to change more than just the campaign parts.
First, let's see how to modify the days and the date.

Here is an example to show different type of days when loading into the main game. These will show up to their corresponding day based on order. The first item in the list corresponds to the first day, the second item for the second day, etc.

"custom_campaign_days_names": ["First Day", "Second Day", "Third Day", "Fourth Day", "Last Day"]

It is best to have one for each day to avoid any non-fitting days.

Now, you might also be interested on how to change the day on the desktop. To do so, provide the following:

"start_year": 1987
"start_month": 11
"start_day": 15

With these 3 options, you can set the start date to any preferred day. Please note, due to how the game is coded, that the first day is 1 day after the start day. So if you wish your game to start on the 15th, provide your start day as the 14th instead.

Some may have noticed that the used date format is from the date and time notation in the United States. So if you prefer the European date format, you can use the following option:

"use_europe_date_format": true

After using these options, you may get a result similar to:

image

You can also provide options to change the desktop loading screen. \

"custom_campaign_loading_desktop_text1": ["First Text loading", "First Text loading.", "First Text loading..", "First Text loading..."],
"custom_campaign_loading_desktop_text2": ["Second Text loading", "Second Text loading\nSecond Text loading 2"]

Desktop

The loading screen will loop through the first list. In this example, I added three dots to simulate it loading. The second text list contains the second part of the loading screen, showing the computer start up and login. In this case, I only provided a dummy text.
Note: Any text in the game you can provide uses Rich Text Markup, so if you wish to customize it even further, use them at your hearts content!

A more simple option is the username on desktop screen:

"desktop_username_text": "Different_Username"

Adding your first caller

WIP

Warning and Game Over Caller

WIP

Add your custom monsters into the campaign

WIP

Add custom emails into the campaign

WIP

Add custom videos into the campaign

WIP