Custom missions are loaded by placing them in the
MyStuff/Missions folder. Each mission should be placed in a subfolder with the name
cup is the cup number and
level is the course number inside the cup. Inside the subfolder, the files
replacement.sarc can be placed.
This file contains all the configuration for the mission, and can be generated using the CTGP-7 EveryFileExplorer plugin. After installing the plugin, new files can be created through
File -> New -> CTGP-7 Plugin -> Custom Mission, or existing files can be opened through
File -> Open....
The configuration file is divided in the following sections.
This section holds general settings for the mission.
|Course||Course for the mission.|
|Class||CC for the mission.|
|Laps||Amount of laps for the mission.|
|Mission Type and Subtype||Base mission rules, more information below.|
|Calculation||What to use to calculate the player grade.|
|Conditions||Special conditions to succeed the mission, more information below.|
|Timer Initial Value||The initial value of the timer when the race starts.|
|Timer Direction||Whether the timer counts up or down.|
|Timer Finish Race||Automatically finish the race when the timer reaches the value.|
|Timer Min Grade
Timer Max Grade
|Determines the player grade based on the timer value when finishing the race.|
|Timer Score Value||The initial value of the score counter when the race starts.|
|Yellow Score||The score counter will turn yellow once this value is reached.|
|Score Direction||Whether the score counts up or down.|
|Score Finish Race||Automatically finish the race when the score reaches the value.|
|Score Min Grade
Score Max Grade
|Determines the player grade based on the score value when finishing the race.|
|Rank Visible||Enabled the position indicator in the top screen.|
|Lakitu Visible||Enables Lakitu showing up when going on reverse or crossing the finish line.|
|Play Course Intro||Enables playing the course intro cameras.|
|Hide Score||Hides the score counter on the top screen.|
|Score Is Bad||Determines if getting a point is a good or bad thing, changing the ingame sound for when that happens.|
|Force Backwards||Forces the user to drive backwards by activating the backwards camera and disabling the A and Y buttons.|
|Finish Race Section 2||If the lap amount is 1, makes the game finish the race once the section 2 checkpoint is reached.|
|Coin Respawn Time||Changes the amount of time coins take to respawn. By default, they respawn every 5 seconds.|
Depending on the mission type, the behavior of the race will be different. The following mission types are available.
|Timer||No special behavior or rules.|
|Gates||A point is given when the player goes through a gate. The subtype value |
|Object||A point is given every time an object determined by the subtype field is "destroyed" or "obtained".|
|Boost||A point is given every time the player obtains a boost from the action determined by the subtype field.|
Mission Complete Conditions
If mission complete conditions are set, all of them will need to be met in order to succeed the mission.
|Yellow score reached||Can only be used if the score configuration is enabled. The yellow score needs to be reached.|
|Yellow score not reached||Can only be used if the score configuration is enabled. The yellow score must not be reached. The race will end as soon as this condition can no longer be satisfied.|
|Player finishes 1st||The player needs to finish the race in 1st position. The race will end as soon as this condition can no longer be satisfied.|
|CPU 1 finishes 1st||The first CPU racer needs to finish the race in 1st position. The race will end as soon as this condition can no longer be satisfied.|
This section determines the drivers that will appear in the race.
You can choose the amount of drivers as well as their kart combinations. If driver is set to recommended, the game will decide automatically (based on some internal rival tables).
This section determines how items will act in the race.
You can use any of the preset item modes of the game, or set a custom item mode. Furthermore, you can configure the amount of time item boxes take to respawn (2 seconds by default).
If the item mode is set to custom, the following options can be configured.
|Spawn Item Boxes||Determines if item boxes spawn in the race.|
|Mode||The mode to calculate which row from the probability table to use. More information below.|
|Give Items||Gives an item automatically as if the driver obtained an item box. The interval of time between giving items and the initial time to wait can be configured.|
|Disable Cooldown||Disables the cooldown some items have, such as lightnings or blue shells, and allows getting items of a type which their limits have already been reached (previous items of the same type will vanish if the limit has been reached reached and a new one is spawned).|
|Roulette Speed||Changes the amount of time the item roulette will spin before deciding the item (3 seconds by default).|
|Probability Table||This table determines the chances for getting a specific item. The row is determined by the |
Probability Row Mode
The row used to calculate the item probabilities is determined by the
Mode field, which can take the following values.
|Box ID||The row is determined by the item box ID (settings5 in the KMP object entry). If this mode is used and the item box ID is set to 0, undefined behavior will happen.|
|Rank||The row is determined by the driver position. If the driver amount is less than 8, the row is calculated proportionally to the player amount (for example: in a 2 driver race, getting an item in 2nd place may give you items from the rows 4 to 8).|
|True Rank||The row is determined by the driver position. Unlike |
|Driver ID||The row is determined by the driver ID.|
This section holds the different text entries related to the mission. You can set entries for each language found in the
MyStuff/Languages folder, the entry
ENG being mandatory.
The following text fields are available:
|Code||The language entry code. Should match the language codes found in |
|Title||The title of the mission. Will display in several places, including the mission selection screen. This field must not be too long, as it may not fit in the spots reserved for it ingame.|
|Description||The mission description, displayed in the mission selection screen. You can use different formatting options, such as bold or font color. Try to mimic the style Nintendo used for describing missions in Mario Kart DS.|
This section has generic information for the mission file, such as the mission unique identifier. It is also possible to reset the mission save data from this section.
data.sarc and replacement.sarc
These two optional archives are SARC files that can be edited directly with EveryFileExplorer. The purpose of this archives is to hold files that will replace the ones found in the target course
SZS file. For example, if the file
Gctr_ToadCircuit.kmp needs special edits for the mission, it can be placed inside
data.sarc to replace the one found in the course
NOTE: Keep in mind that file names are not stored inside
SARC/SZS archives, instead a hash of the name is stored (
0xXXXXXXXX, where every
X is a hexadecimal number). If such hash happens to be listed in the file name database of EveryFileExplorer, the file name will be displayed, otherwise, the hash will be displayed.
In the case of data.sarc, the archive can only hold a maximum of 300KB of data. If the archive is bigger than that, it will fail loading. However, you can place any files inside which are bigger in size than the original files found in the course
SZS, and even new files that are not present there (as long as the total size is kept under the limits). Moreover, the following files can be placed in this archive to use some custom mission features.
||Replaces the icon next to the score counter.|
||Replaces the item box model.|
||Replace the coin high and low detail models.|
||Replaces the sound effect when collecting a coin.|
In the case of replacement.sarc, the archive can hold any amount of data. However, the individual files inside it should be smaller or equal in size than the original files found in the course
SZS. New files that aren't present in the course
SZS cannot be added.
This file can be used to replace the course preview music. It has to be a 2 channel BCSTM file at 32728Hz. If this file is not present, the normal Grand Prix course preview music will play.
This file controls the music that will play during the race. It has the same format as the MyStuff MusicSlotsUser.ini file. The actual BCSTM files need to be placed in the mission's own folder and not in the MyStuff
stream folder. If this file is not present, the configuration in the other .ini files will be used instead (normally, this is the course original music).
Several course objects have been repurposed in order to bring extra behavior to mission mode.
Replaces the Music Glider Ramp object (ID 0x1AA). As a result, such object needs to be removed from Music Park if a mission is done there, or unexpected results will happen. For this object to work properly, the custom files representing a gate
MpBoard/MpBoard.kcl are needed in the
data.sarc file (you can grab them from an official mission file). In the kmp, you can specify each gate number by changing
Settings3 of the Music Glider Ramp object (set to 0 if you don't want the gate to have a number). The numbers 1 to 10 are available.
Replaces the Melting Ice Platform object (ID 0x1C). As a result, such object needs to be removed from Rosalina Ice World if a mission is done there, or unexpected results will happen. For this object to work properly, the custom files representing a barrier
MeltIce/MeltIce.kcl are needed in the data.sarc file. Barriers are divided in 2 different types, the first type (
Settings1 is 0) only has a visual model and no collision, while the second type (
Settings1 is 1) only has collision and no visual model. The collision is a vertical plane situated at the origin and 1000 units wide. This value was chosen so you can use dummy Area points in the kmp editor to get an idea of how much to change the
ScaleX to cover the entire length you want. Due to a buggy implementation in Nintendo's collision system, multiple gate collision planes should not intersect (only use a single collision gate object even if you use multiple visual ones).