Add setting to disable script parameter randomisation
This commit is contained in:
@@ -206,14 +206,14 @@ struct GSConfigWindow : public Window {
|
|||||||
TextColour colour;
|
TextColour colour;
|
||||||
uint idx = 0;
|
uint idx = 0;
|
||||||
if (config_item.description.empty()) {
|
if (config_item.description.empty()) {
|
||||||
if (Game::GetInstance() == nullptr && config_item.random_deviation != 0) {
|
if (Game::GetInstance() == nullptr && config_item.random_deviation != 0 && !GetGameSettings().script.script_disable_param_randomisation) {
|
||||||
str = STR_AI_SETTINGS_JUST_DEVIATION;
|
str = STR_AI_SETTINGS_JUST_DEVIATION;
|
||||||
} else {
|
} else {
|
||||||
str = STR_JUST_STRING1;
|
str = STR_JUST_STRING1;
|
||||||
}
|
}
|
||||||
colour = TC_ORANGE;
|
colour = TC_ORANGE;
|
||||||
} else {
|
} else {
|
||||||
if (Game::GetInstance() == nullptr && config_item.random_deviation != 0) {
|
if (Game::GetInstance() == nullptr && config_item.random_deviation != 0 && !GetGameSettings().script.script_disable_param_randomisation) {
|
||||||
str = STR_AI_SETTINGS_SETTING_DEVIATION;
|
str = STR_AI_SETTINGS_SETTING_DEVIATION;
|
||||||
} else {
|
} else {
|
||||||
str = STR_AI_SETTINGS_SETTING;
|
str = STR_AI_SETTINGS_SETTING;
|
||||||
@@ -232,7 +232,7 @@ struct GSConfigWindow : public Window {
|
|||||||
DrawArrowButtons(br.left, y + button_y_offset, COLOUR_YELLOW, (this->clicked_button == i) ? 1 + (this->clicked_increase != rtl) : 0, editable && current_value > config_item.min_value, editable && current_value < config_item.max_value);
|
DrawArrowButtons(br.left, y + button_y_offset, COLOUR_YELLOW, (this->clicked_button == i) ? 1 + (this->clicked_increase != rtl) : 0, editable && current_value > config_item.min_value, editable && current_value < config_item.max_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Game::GetInstance() != nullptr || config_item.random_deviation == 0) {
|
if (Game::GetInstance() != nullptr || config_item.random_deviation == 0 || GetGameSettings().script.script_disable_param_randomisation) {
|
||||||
auto config_iterator = config_item.labels.find(current_value);
|
auto config_iterator = config_item.labels.find(current_value);
|
||||||
if (config_iterator != config_item.labels.end()) {
|
if (config_iterator != config_item.labels.end()) {
|
||||||
SetDParam(idx++, STR_JUST_RAW_STRING);
|
SetDParam(idx++, STR_JUST_RAW_STRING);
|
||||||
|
@@ -2298,6 +2298,9 @@ STR_CONFIG_SETTING_CITY_IN_LABEL_HELPTEXT :Display if a to
|
|||||||
|
|
||||||
STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Path signals only
|
STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Path signals only
|
||||||
|
|
||||||
|
STR_CONFIG_SETTING_SCRIPT_DISABLE_PARAM_RANDOM :Disable script parameter randomisation: {STRING2}
|
||||||
|
STR_CONFIG_SETTING_SCRIPT_DISABLE_PARAM_RANDOM_HELPTEXT :Disable the randomisation of AI/GS script paraneters.
|
||||||
|
|
||||||
STR_CONFIG_SETTING_RESTRICT_PATCH :Non-standard settings which are not in vanilla OpenTTD
|
STR_CONFIG_SETTING_RESTRICT_PATCH :Non-standard settings which are not in vanilla OpenTTD
|
||||||
|
|
||||||
###length 4
|
###length 4
|
||||||
|
@@ -126,6 +126,7 @@ void ScriptConfig::ResetEditableSettings(bool yet_to_start)
|
|||||||
|
|
||||||
void ScriptConfig::AddRandomDeviation(CompanyID owner)
|
void ScriptConfig::AddRandomDeviation(CompanyID owner)
|
||||||
{
|
{
|
||||||
|
if (GetGameSettings().script.script_disable_param_randomisation) return;
|
||||||
for (const auto &item : *this->GetConfigList()) {
|
for (const auto &item : *this->GetConfigList()) {
|
||||||
if (item.random_deviation != 0) {
|
if (item.random_deviation != 0) {
|
||||||
this->SetSetting(item.name, ScriptObject::GetRandomizer(owner).Next(item.random_deviation * 2 + 1) - item.random_deviation + this->GetSetting(item.name));
|
this->SetSetting(item.name, ScriptObject::GetRandomizer(owner).Next(item.random_deviation * 2 + 1) - item.random_deviation + this->GetSetting(item.name));
|
||||||
|
@@ -393,14 +393,14 @@ struct ScriptSettingsWindow : public Window {
|
|||||||
TextColour colour;
|
TextColour colour;
|
||||||
uint idx = 0;
|
uint idx = 0;
|
||||||
if (config_item.description.empty()) {
|
if (config_item.description.empty()) {
|
||||||
if (this->slot != OWNER_DEITY && !Company::IsValidID(this->slot) && config_item.random_deviation != 0) {
|
if (this->slot != OWNER_DEITY && !Company::IsValidID(this->slot) && config_item.random_deviation != 0 && !GetGameSettings().script.script_disable_param_randomisation) {
|
||||||
str = STR_AI_SETTINGS_JUST_DEVIATION;
|
str = STR_AI_SETTINGS_JUST_DEVIATION;
|
||||||
} else {
|
} else {
|
||||||
str = STR_JUST_STRING1;
|
str = STR_JUST_STRING1;
|
||||||
}
|
}
|
||||||
colour = TC_ORANGE;
|
colour = TC_ORANGE;
|
||||||
} else {
|
} else {
|
||||||
if (this->slot != OWNER_DEITY && !Company::IsValidID(this->slot) && config_item.random_deviation != 0) {
|
if (this->slot != OWNER_DEITY && !Company::IsValidID(this->slot) && config_item.random_deviation != 0 && !GetGameSettings().script.script_disable_param_randomisation) {
|
||||||
str = STR_AI_SETTINGS_SETTING_DEVIATION;
|
str = STR_AI_SETTINGS_SETTING_DEVIATION;
|
||||||
} else {
|
} else {
|
||||||
str = STR_AI_SETTINGS_SETTING;
|
str = STR_AI_SETTINGS_SETTING;
|
||||||
@@ -419,7 +419,7 @@ struct ScriptSettingsWindow : public Window {
|
|||||||
DrawArrowButtons(br.left, y + button_y_offset, COLOUR_YELLOW, (this->clicked_button == i) ? 1 + (this->clicked_increase != rtl) : 0, editable && current_value > config_item.min_value, editable && current_value < config_item.max_value);
|
DrawArrowButtons(br.left, y + button_y_offset, COLOUR_YELLOW, (this->clicked_button == i) ? 1 + (this->clicked_increase != rtl) : 0, editable && current_value > config_item.min_value, editable && current_value < config_item.max_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->slot == OWNER_DEITY || Company::IsValidID(this->slot) || config_item.random_deviation == 0) {
|
if (this->slot == OWNER_DEITY || Company::IsValidID(this->slot) || config_item.random_deviation == 0 || GetGameSettings().script.script_disable_param_randomisation) {
|
||||||
auto config_iterator = config_item.labels.find(current_value);
|
auto config_iterator = config_item.labels.find(current_value);
|
||||||
if (config_iterator != config_item.labels.end()) {
|
if (config_iterator != config_item.labels.end()) {
|
||||||
SetDParam(idx++, STR_JUST_RAW_STRING);
|
SetDParam(idx++, STR_JUST_RAW_STRING);
|
||||||
|
@@ -2701,6 +2701,7 @@ static SettingsContainer &GetSettingsTree()
|
|||||||
{
|
{
|
||||||
npc->Add(new SettingEntry("script.script_max_opcode_till_suspend"));
|
npc->Add(new SettingEntry("script.script_max_opcode_till_suspend"));
|
||||||
npc->Add(new SettingEntry("script.script_max_memory_megabytes"));
|
npc->Add(new SettingEntry("script.script_max_memory_megabytes"));
|
||||||
|
npc->Add(new SettingEntry("script.script_disable_param_randomisation"));
|
||||||
npc->Add(new SettingEntry("difficulty.competitor_speed"));
|
npc->Add(new SettingEntry("difficulty.competitor_speed"));
|
||||||
npc->Add(new SettingEntry("ai.ai_in_multiplayer"));
|
npc->Add(new SettingEntry("ai.ai_in_multiplayer"));
|
||||||
npc->Add(new SettingEntry("ai.ai_disable_veh_train"));
|
npc->Add(new SettingEntry("ai.ai_disable_veh_train"));
|
||||||
|
@@ -568,6 +568,7 @@ struct AISettings {
|
|||||||
struct ScriptSettings {
|
struct ScriptSettings {
|
||||||
uint32_t script_max_opcode_till_suspend; ///< max opcode calls till scripts will suspend
|
uint32_t script_max_opcode_till_suspend; ///< max opcode calls till scripts will suspend
|
||||||
uint32_t script_max_memory_megabytes; ///< limit on memory a single script instance may have allocated
|
uint32_t script_max_memory_megabytes; ///< limit on memory a single script instance may have allocated
|
||||||
|
bool script_disable_param_randomisation; ///< disable script parameter randomisation
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Settings related to the new pathfinder. */
|
/** Settings related to the new pathfinder. */
|
||||||
|
@@ -76,6 +76,15 @@ pre_cb = CheckScriptMaxMemoryChange
|
|||||||
post_cb = ScriptMaxMemoryChange
|
post_cb = ScriptMaxMemoryChange
|
||||||
cat = SC_EXPERT
|
cat = SC_EXPERT
|
||||||
|
|
||||||
|
[SDT_BOOL]
|
||||||
|
var = script.script_disable_param_randomisation
|
||||||
|
flags = SF_PATCH
|
||||||
|
def = false
|
||||||
|
str = STR_CONFIG_SETTING_SCRIPT_DISABLE_PARAM_RANDOM
|
||||||
|
strhelp = STR_CONFIG_SETTING_SCRIPT_DISABLE_PARAM_RANDOM_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_SCRIPT_SETTINGS); InvalidateWindowClassesData(WC_GAME_OPTIONS); }
|
||||||
|
cat = SC_ADVANCED
|
||||||
|
|
||||||
[SDT_BOOL]
|
[SDT_BOOL]
|
||||||
var = ai.ai_in_multiplayer
|
var = ai.ai_in_multiplayer
|
||||||
def = true
|
def = true
|
||||||
|
Reference in New Issue
Block a user