Closed jakubg1 closed 1 month ago
Planned feature in Beta 5.0.0.
Outline:
config/difficulties/<name>.json
and each difficulty will get its own file.config/level_sets/<name>.json
.config/score_sets/<name>.json
.
"gem_6":{"value":6000,"text":[{"type":"parameter","name":"score"}],"font":"score0.json"}
null
if we want the score to appear silently. "spheres": {
"value": {
"type": "multiply",
"values": [
100,
{
"type": "add",
"values": [
{"type":"parameter","name":"length"},
{
"type": "if",
"condition": {"type":"parameter","name":"comboBoost"},
"if": {
"type": "max",
"values": [
{
"type": "subtract",
"values": [
{"type":"parameter","name":"comboLv"},
3
]
},
0
]
}
}
]
},
{"type":"parameter","name":"chainLv"}
]
},
"text": {
"type": "concat",
"values": [
{"type":"parameter","name":"_score"},
{
"type": "if",
"condition": {
"type": "and",
"values": [
{"type":"parameter","name":"comboBoost"},
{
"type": "greater_than",
"values": [
{"type":"parameter","name":"comboLv"},
2
]
}
]
},
"if": {
"type": "concat",
"values": [
"\nCOMBO X",
{"type":"parameter","name":"comboLv"}
]
}
},
{
"type": "if",
"condition": {
"type": "not_equal",
"values": [
{"type":"parameter","name":"chainLv"},
1
]
},
"if": {
"type": "concat",
"values": [
"\nCHAIN X",
{"type":"parameter","name":"chainLv"}
]
}
}
]
},
"font": {"type":"parameter","name":"font"}
}
100 * ( [length] + {
IF [comboBoost] THEN ( max ( [comboLv] - 3, 0 ) )
} ) * [chainLv]
[_score] .. {
IF ( [comboBoost] && ( [comboLv] > 2 ) ) THEN ( "\nCOMBO X" .. [comboLv] )
} .. {
IF ( [chainLv] != 1 ) THEN ( "\nCHAIN X" .. [chainLv] )
}
The same solution again, written in currently supported expression data:
"spheres": {
"value": "100 * ([length] + ([comboBoost] ? max([comboLv]-3, 0) : 0)) * [chainLv]",
"text": "[_score] .. ([comboBoost] && [comboLv] > 2 ? \"\nCOMBO X\" .. [comboLv] : \"\") .. ([chainLv] != 1 ? \"\nCHAIN X\" .. [chainLv] : \"\")",
"font": "[font]"
}
In order for it to work, the following expression features need to be added:
..
(concatenation)Score Events have been added here: https://github.com/jakubg1/OpenSMCE/commit/05d12130388a0ff892ab94df1a67e76fa6ff8b72
Implemented in a basic form for now: https://github.com/jakubg1/OpenSMCE/commit/8b1b85347585b0d465b1ff6783b4e8a6a4ba2f10
Difficulties are stored in
runtime.json
in a particular game's main directory, however they are not used. Change the type from integer to string. Difficulties alter some values. Consider implementing them similarly to Luxor 2's system. Example from difficulty.gvf (one of the difficulties):If one implements such values like here (preferably in the main game config file), there's no need to do it separately in that case.