-
Notifications
You must be signed in to change notification settings - Fork 0
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.
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": 5The 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:
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": trueThese 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": trueNow, 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:
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:
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.
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": falseIn 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": 60The 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.
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": 15With 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": trueAfter using these options, you may get a result similar to:
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"]
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"
As the name suggests, it just changes the username to a different one. Fancy.
Now for a "more" fun part. How to modify the desktop background. The background is split into two parts, first the logo shown on top and the actual background. I will first show how to change the background first.
The background in the main game is changed every day and even has a custom one for finishing the game. You can provide the different backgrounds for each day with:
"custom_campaign_desktop_backgrounds": ["firstDayBackground.png", "secondDayBackground.png", "lastThirdDayBackground.png"],
"custom_campaign_desktop_game_finished_background": "IWONTHEGAMEimage.jpg",
"disable_green_color_on_desktop": trueSimilar to how we provided option on how to change the different day names. Each image in the list correspond to their corresponding day. If you wish to have a background for multiple days, just provide the same image.
The second option as the name suggests is the background shown after beating your campaign.
Now for the third option. It it used to disable the green color filter over your image. If you wish to show your image in its pure color, use this option. But if you wish to keep the CRT style of coloring, you can leave it on by not providing it.
Let us talk about the logo now. Per default it shows the Home Safety Hotline logo in the middle of your screen. If you don't care about the logo or do not want it, you can simply disable it with:
"disable_desktop_logo": trueIf however you do wish to use it and even modify it, you can use the following options:
"custom_desktop_logo_name": "weird_cat.png"
"custom_desktop_logo_transparency": 0.2627The first option custom_desktop_logo_name provides the image for the logo. The second option custom_desktop_logo_transparency is used to define how transparent the logo is suppose to be. Per default it is set to 0.2627. So if you wish it less transparent, provide a higher number and if you want it more transparent, provide a lower number.
If you set your background and logo to your hearts content, you should see a result similar to this (or not similar):
Now as you can see the image, you can also change the main games logo and text to a different one with:
"rename_main_game_desktop_icon": "John Safety Hotline"
"main_game_desktop_icon_path": "pizza_cat.png"And that covered all the custom campaign options. Next up, if you haven't read it yet, is how to add custom callers to your custom campaign, so that you can finally test and see it work.
Now after you have created your custom campaign it's time to add callers to it. For this, create a new file (newCaller.json) and call it whatever you wish. Just be know that each custom caller must have their own file.
Every custom caller in a custom campaign needs the following form:
{
"custom_caller_name": "John Safety",
"custom_caller_transcript": "This doesn't seem to be safe. But I trust your judgement.",
"custom_caller_image_name": "john.png",
"custom_caller_audio_clip_name": "john_crying.mp3",
"custom_campaign_attached": "Name of custom campaign here",
"order_in_campaign": 23
}The first three lines should be familiar if you have created a custom entry before. The last two are however new.
The line custom_campaign_attached allows you to provide a name for the custom caller to be attached to (This refers to the internal name and not the desktop name).
The option order_in_campaign is to set the order it should appear in. If it is the first caller, you provide a 0. If the caller is the second, you provide the number 1, up until your n'th caller which will have the order n - 1. Make sure you don't forget to start at 0! And also don't forget to include all numbers without any gaps, so, if you provide caller 0 and caller 2, you also need to provide caller 1 or else it won't work.
The current caller we defined above is called a dynamic caller, since it does not do anything other than provide its transcript and go away.
Callers that have a monster / entry attached, are not dynamic callers.
Now there is something important to know! The last caller of your campaign should be a dynamic caller! If not, the game will not end your campaign! That means don't provide a monster / entry for the last caller.
Lets now see a few more options.
To provide a monster / entry to be asked by the custom caller, you need to provide any of the following:
"custom_caller_monster_name": "Pizza Cat",
"custom_caller_monster_id": 34The first option is the recommended way to have it ask for that monster. If however you want to instead use id's, you can use them. But be aware, that this ID is meant for testing. Please be aware that due to how the game is made, that you can not loose on the first day. This may change if there is enough interest to be able to loose on the first day, then don't be afraid to scream at me to implement it.
Now for a few interesting options.
"custom_caller_downed_network": true
"custom_caller_increases_tier": trueThe first option custom_caller_downed_network downs the "network". Which basically means that the player can not access the entries as if the internet was gone. This should be familiar if you have played the main campaign.
Second option is an option you can use to increase the tier of the player in the campaign. That means that if your entries have a higher unlock requirement, you can use it to unlock it for them. How you use this, is up to you to decide, but I recommend doing it like the main game at the beginning of the day with a dynamic caller.
Now after adding a few caller you may be interested in how to end the day after a call finished (or else it will go through each caller in the first day and end the game on first day). The option is quite straightforward:
"custom_caller_last_caller_day": trueIf set to true, it will end the day afterwards. Any caller defined afterwards start on the next day.
Now an extra option that many will probably will use are consequence callers (Different from warning calls!), which basically are the second call which only happen if the player got it wrong. So, if the player said its an "Ant" and not your custom monster "Ant Queen", then you use this option to tell the game that the current call should only play if the caller if the order / ID n (For example: 23) was wrong. You can provide it in the consequence caller by:
"custom_caller_consequence_caller_id": 23Which says "this caller should only happen if I choose wrongly for caller 23".
After you have succesfully defined your custom caller, you should see something like this:
Now this is a lot and you might be wondering if it possible to replace callers in the main campaign. The answer is yes and no. You can provide the option:
"include_in_main_campaign": truePlease be aware that this not guruanteed to work and is still in active development, but it works most of the time for basic callers.
That covers all the basics for a custom caller. The next section will show you how to create warning and game over callers. This will be usefull if you don't want the default callers.
A warning caller is a caller that happens after the accuraccy drops below the warning threshold provided in the custom campaign. (It also requires a number of non-dynamic callers to happen before the warning call happens, so if you want different values, provide them in your custom campaign file).
To define a warning caller, one must only need to create a normal custom caller (without attachting a monster or entry to it, as it wouldn't fit) and add the following line:
"is_warning_caller": trueThe line is always required to define the caller as a warning caller and not a normal caller. As such providing an order is not needed. Now, if you only provide like above it will replace all warning callers, but if you wish different warning callers for different days you can provide the following line as well:
"warning_caller_day": 2Which will make the warning caller only appear on the second (2) day. That means you can have multiple warning callers for each day and even one warning caller for all days except the ones you provided. It will always prioritize the warning callers with the day provided over general warning callers.
Thats all for warning callers. A similar option are game over callers which happen when the player looses the game (can happen on each day except the first day).
It uses the lines:
"is_gameover_caller": true,
"gameover_caller_day": 1Similar to warning callers, if you don't provide the day, it will apply for each day and will be overriden by other game over callers if they provide a day.
And that is all for custom callers! The next section will shortly cover on how to add your already / or soon to be monsters to the custom campaign.
This is a small section about attaching your custom monster / entry to the custom campaign. If you haven't yet, check out how to create a custom entry!
Now after you have created your entry, all you have to do is add the following line:
"attached_custom_campaign_name" : "Name of custom campaign"With this line you attach the entry to the custom campaign. Meaning that it won't be available for the main campaign. Please note if you didn't see the caller section, is that the name of the custom campaign is the internal name and not the desktop name.
And that is all, now the entry / monster will be available in the custom campaign. And last two sections will cover on how to add custom emails and videos to the custom campaign.
Adding custom emails is done the same way as adding a new custom caller, by creating a new file. You create a new file and add these basic required lines first:
{
"email_subject": "Title of the email here",
"email_custom_campaign_name": "Name of the campaign the email belongs to",
"email_sender": "Sender of the email",
"email_body": "Text that inside the email using any rich text markup features."
}"email_in_main_campaign": false"email_unlock_day": 2,
"email_unlock_threshold": 90"email_image": "cat.png"WIP
- 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