{'Conditional': {'Condition':function(){/* return true/false or string */},'True':'<statement>','False':'<statement>'}}
Conditionals allow you to control the flow of your game based on conditions. You can show different dialogs, jump to different labels, or execute different actions depending on storage values, player choices, or any other condition.
Action ID: Conditional
Reversible: Yes
Requires User Interaction: Depends on the branch statement executed
Basic Structure
Property
Type
Description
Condition
function
Function that returns true, false, or a string key
True
statement
Statement to execute if condition returns true
False
statement
Statement to execute if condition returns false
<custom>
statement
Custom branches when using string return values
Examples
Boolean Condition
Check if a condition is true or false:
Conditional Jump
Jump to different labels based on a condition:
Multiple Branches (String Returns)
Use string return values for more than two branches:
Numeric String Branches
Use numbers as string keys for indexed branches:
Complex Condition
Combine multiple checks:
Important Notes
[!WARNING] All branches must be defined! Monogatari throws an error if the Condition returns a value that doesn't match any branch key. Always account for all possible return values.
{'Conditional': {
'Condition': function () {
// Convert number to string for branch key
const affection = this.storage().affection;
if (affection >= 100) return '3';
if (affection >= 50) return '2';
if (affection >= 25) return '1';
return '0';
},
'0': 'e I barely know you.',
'1': "e We're acquaintances, I suppose.",
'2': "e You're a good friend.",
'3': 'e You mean everything to me!'
}},
{'Conditional': {
'Condition': function () {
const hasKey = this.storage().inventory.includes('key');
const metGuard = this.storage().flags.metGuard;
if (hasKey && metGuard) {
return 'full_access';
} else if (hasKey) {
return 'has_key';
} else if (metGuard) {
return 'knows_guard';
}
return 'False';
},
'full_access': 'jump EnterCastle',
'has_key': 'e The guard stops me. I have a key but no permission.',
'knows_guard': 'e The guard lets me pass, but the door is locked.',
'False': "e I can't get in here."
}},
{'Conditional': {
'Condition': async function () {
const result = await someAsyncCheck();
return result;
},
'True': 'e The async check passed!',
'False': 'e The async check failed.'
}},