Skip to content

Customize your Custom Campaign

Gasterbuzzer edited this page Feb 2, 2026 · 14 revisions

Customize your Custom Campaign

This section covers a few more topics that may help you customize your custom campaign. These are not required but may be helpful for you.

Add custom emails into the campaign

Emails in the game appear on certain days or are unlocked by reaching a certain score in the campaign.

Adding custom emails is done the same way as adding a new custom caller. You create a new file and add these required lines first:

{
  "email_subject": "Title of the email here",
  "email_sender": "Sender of the email",
  "email_body": "Text that inside the email using any rich text markup features.",

  "email_custom_campaign_name": "Name of the campaign the email belongs to"
}

The first three lines define the email's subject, sender, and body. These terms should be familiar if you have written an email before. To attach the email to the custom campaign, one must only add the line email_custom_campaign_name which adds the email to the custom campaign.
Right now the mail is unlocked by default with no unlock condition. To change that, you can provide the following lines:

"email_unlock_day": 2,

"email_unlock_threshold": 90

With the option email_unlock_day you can specify on which day the email gets unlocked. And if you combine it with the option email_unlock_threshold, you can specify at what score from the previous day the email gets unlocked. So if you had a score of 80%, and you set the threshold to 90, you will not unlock the email, and it won't show up. This is similar to how the coupons are made in the main campaign.

Now, as you know, you can have a single image at the end of the email show up. You can provide an image for the custom email with:

"email_image": "image_at_the_end_of_the_email.png"

If you provided everything correctly, you should see an email like the following appear:

image

For those advanced, you can change emails in the main campaign (disabled by default) as well with the following line:

"email_in_main_campaign": false

And that covers this small section. The next and last section will show you how to add videos on the desktop.

Add custom videos into the campaign

Similar to creating a custom emails, we must create a new file to define a video for the custom campaign. You need to provide the following lines:

"video_desktop_name": "Name of the video file on the desktop",
"video_file_name": "video_name.mp4",
"custom_campaign_attached": "Name of the campaign",

The first line defines the name of the file as it should appear on the desktop.
You can make it appear as if it were an actual file or name it as you wish.
The second line video_file_name defines the video file name. You might have already done the same for the custom campaign end cutscenes. The third line should be understood already, but it defines to which campaign to be attached to.

Similar to emails, you may only want your video to appear on a specific day. You can do so with the following line:

"video_unlock_day": 1

After creating a video, it should appear on the desktop like so:

image

And that should cover on how to add a custom videos to the custom campaign.

Add custom music to your campaign

Adding custom music is done the same way as the previous sections:

{
	"custom_campaign_attached": "Custom Campaign Name",
	"music_audio_clip_name": "MusicClip1.wav",
	
	"unlock_day": 0
}

The first 2 lines should be easy to understand. The first line provides the custom campaign to be attached to, and the second line provides the audio clip to be heard.

The third line is a bit more complicated but similarly known. It sets when the music is allowed to play. By default, any music is allowed to play from the first day. If you increase the unlock days to any higher day, it will only play starting from that day, not any time before.

Add custom ringtones to your campaign

Adding ringtones is also quite simple. For a simple ringtone you can use the following basic structure:

{
	"custom_campaign_attached": "TESHSH",

	"ringtone_audio_clip_name": "testRingtone.mp3",

	"unlock_day": 0
}

The first line defines the custom campaign this ringtone belongs to. The second line provides the audio clip to be played, and the last line defines when this ringtone is unlocked. Please note, if the unlock day is 0 then it will appear on every day. If it is set to any other number than 0, it will play only on the provided day. You can change that behavior with:

	"only_play_on_unlock_day": false

If set to false, it will make sure the ringtone plays beginning from that day onward and not just that single day.

If you wish to have a random ringtone for each day, you can also set the ringtone to be appended instead:

	"is_append_ringtone": true

This will add the ringtone into a list, where one ringtone is picked randomly at the beginning of the day. If you also wish to have the default ringtone be able to appear, you can set the following option in your custom campaign JSON:

	"do_not_account_default_ringtone": false

If you also wish to replace the "Network Down" ringtone, you can simply use the following option to replace the warped ringtone:

	"is_glitched_version": true

Add custom themes to your campaign

One cool feature that you might want is custom themes!

Custom themes are very similar to in-game themes. You can select them in the in-game settings, or you can make them be the default theme for your campaign.

Here is a simple theme for your custom campaign. These are, as are all the other features, contained in a separate JSON file:

{
   "theme_custom_campaign_attached": "Quiet On Hallows Eve",
   "theme_name": "Default Custom Campaign Theme",
	
   "title_bar_color": [0.5, 1, 1],
   "menu_color": [0.325, 0.62, 0.263],
   "main_window_color": [0.596, 0.263, 0.62, 0.5],

   "entry_font_color": [0.62, 0.263, 0.263]
}

The first two lines should be easy to understand. These define in which campaign to show your theme and the name of the theme.

The three lines after the first two define the color and are the main part of the theme. Each element in the list (for example, [0.325, 0.62, 0.263]) represents one color. We use the format RGBA (Red, Green, Blue, Alpha) (These can either be in 0-1 format (1 = 100% and 0 = 0%). Or they can be in 0-255 format (255 = 100% and 0 = 0%)). You can find many color pickers online to describe the color you want. The alpha value defines the transparency of the color. You don't need to provide the alpha value, but you can if you wish to use it. The last color (entry_font_color) defines the color of the font for entries. This can be helpful so that you can read it better.

To better understand each color, here is a small image describing each:

WindowColors

Let us continue with a few more options that you might find interesting. One of these is "conditional themes". These themes override a certain theme, but only on certain days. For example, it might be appealing to use for turning every menu option red on the last day. You can do so by adding these lines:

"attached_to_theme": "Default Custom Campaign Theme",
"unlock_day": [0, 1]

The first option is to state that it should only override the theme called "Default Custom Campaign Theme". This is to allow the user more freedom when choosing a theme and it not being forced upon the user. Though you may not want the user to change the theme, for that you can add the option inside your custom campaign option (not in the theme file):

"disable_theme_dropdown": true

You can also set which theme is the default theme of your campaign with:

"defaultTheme": "Default Custom Campaign Theme"

Now, if you are interested, you can also add your themes to the main campaign. Please note, this will make it only appear in the main campaign!

"theme_in_main_campaign": true

That is all for custom themes. Let us move to modifiers.

Add custom modifiers to your campaign

Modifiers allow you to modify certain aspects of the game. They can be applied globally or on certain days only. Please be aware that if you have a modifier that is active on one day, it will override any global modifiers. The simplest modifier you can make is:

{
	"modifier_custom_campaign_attached": "Campaign Name without any typos"
}

Similar to the campaign options, you can provide most of these options in modifiers. Here are a few options. For all available options, please check the documentation.

{
        "desktop_username_text": "Bob",
        "desktop_logo_image_name": "test.png",
        "desktop_background_color": [0, 0.5, 0.5],
        "entry_browser_state": false
}

The first line should already be known. It defines the username that is shown on the desktop. The second line defines the logo seen on the desktop over the background picture. The third option (NEW!) allows you to change the color of the background. The last line simply enables/disables the entry browser for that day.

Now, similar to the themes, you can set your modifiers to only appear on certain days. This can be done via:

"unlock_day": [4, 5, 6]

Each day in the list means that the modifier will only work on that day. You can have multiple modifiers for each day. Just know that "general" modifiers (modifiers that don't have an unlock day provided) are overwritten by "conditional" modifiers (Modifiers that only appear on certain days). Overlapping modifiers are handled by the first that comes, so avoid any conflicts if possible.

Also be aware, I have not listed all options here, but if you go over to the list (next page), you will see that there are many options that you may be interested in.

Advanced Settings

This small section is meant for more complicated features that may not be needed. So you can skip this section and not miss anything major.

Testing can be the most exhausting point of it all, so having to sit through the starting computer screen can take up much of your time. You can actually skip the initial cutscene entirely. This option is a bit different, however and as such may be a bit more difficult to find.
Make sure you have run the game at least once!

If you navigate from your games folder to UserData, you should be able to see a file named MelonPreferences.cfg:

image

Inside this file, you should be able to find the line:

[MainModSettings]
SkipComputerScene = false

Here simply change the false to true and now you won't have to watch the initial scene every time.

Section End

That wraps up this section.
If you have any other questions, feel free to message me.
If you want every option displayed in a cleaner matter, you can check the documentation for a list of all used and available features.
In any case, if you want a feature that isn't added yet, don't be afraid to ask! This isn't all there will be.
Anyway, have fun creating your campaigns!