Divergent/mods/Jabbers Soulslike Gamemode/gamedata/scripts/soulslike_mcm.script

645 lines
17 KiB
Plaintext

--[[
Jabbers
05APR2023
Jabbers' Soulslike Anomaly Mod
--]]
function on_mcm_load()
local op = {
id = "soulslike",
gr = { }
}
local general = {
id = "general",
text = "ui_mcm_soulslike_general",
sh = true,
gr = {
{
id = "title",
type = "slide",
link = "ui_options_slider_gameplay_diff",
text = "ui_mcm_soulslike_general_title",
size = {512,50},
spacing = 20
},
{
id = "desc_mcm",
type = "desc",
text = "ui_mcm_soulslike_general_description",
clr = {255, 255 ,255 ,255},
},
{
id = "desc_mcm",
type = "desc",
text = "ui_mcm_soulslike_general_disclaimer",
clr = {255, 255 ,255 ,0},
},
},
}
table.insert(op.gr, general)
local character = {
id = "character",
text = "ui_mcm_soulslike_character",
sh = true,
gr = {
{
id = "title",
type = "slide",
link = "ui_options_slider_gameplay_diff",
text = "ui_mcm_soulslike_character_title",
size = {512,50},
spacing = 20
},
{
id = "health_loss_on_respawn",
type = "track",
val = 2,
min = 0.0,
max = 0.75,
step = 0.01,
def = 0.75
},
{
id = "rank_loss_percent",
type = "track",
val = 2,
min = 0,
max = 0.75,
step = 0.01,
def = 0.02
},
{
id = "rep_loss_percent",
type = "track",
val = 2,
min = 0,
max = 0.75,
step = 0.01,
def = 0.05
}
},
}
table.insert(op.gr, character)
local items = {
id = "items",
text = "ui_mcm_soulslike_items",
sh = true,
gr = {
{
id = "title",
type = "slide",
link = "ui_options_slider_gameplay_diff",
text = "ui_mcm_soulslike_items_title",
size = {512,50},
spacing = 20
},
{
id = "keep_equipped_items_on_death",
type = "check",
val = 1,
def = false
},
{
id = "desc_mcm",
type = "desc",
text = "ui_mcm_soulslike_items_scalar_description",
clr = {255, 255 ,255 ,255},
},
{
id = "item_loss_scalar",
type = "track",
val = 2,
min = 0,
max = 0.75,
step = 0.01,
def = 0.20
},
{
id = "item_condition_loss_scalar",
type = "track",
val = 2,
min = 0,
max = 0.25,
step = 0.01,
def = 0.05
},
{
id = "desc_mcm",
type = "desc",
text = "ui_mcm_soulslike_items_allow_desc",
clr = {255, 255 ,255 ,255},
},
{
id = "allow_weapon_loss",
type = "check",
val = 1,
def = true
},
{
id = "allow_outfit_loss",
type = "check",
val = 1,
def = true
},
{
id = "allow_headgear_loss",
type = "check",
val = 1,
def = true
},
{
id = "allow_artifact_loss",
type = "check",
val = 1,
def = true
},
{
id = "allow_tool_loss",
type = "check",
val = 1,
def = true
},
},
}
table.insert(op.gr, items)
local scenarios = {
id = "scenarios",
text = "ui_mcm_soulslike_scenarios",
sh = true,
gr = {
{
id = "title",
type = "slide",
link = "ui_options_slider_gameplay_diff",
text = "ui_mcm_soulslike_scenarios_title",
size = {512,50},
spacing = 20
},
{
id = "desc_mcm",
type = "desc",
text = "ui_mcm_soulslike_scenarios_description",
clr = {255, 255 ,255 ,255},
},
{
id = "rf_detector_scenario_weight",
type = "track",
val = 2,
min = 0.0,
max = 1.0,
step = 0.01,
def = 0.10
},
{
id = "hidden_stash_scenario_weight",
type = "track",
val = 2,
min = 0.0,
max = 1.0,
step = 0.01,
def = 0.10
},
{
id = "looter_npcs_marked",
type = "check",
val = 1,
def = false
}
},
}
table.insert(op.gr, scenarios)
local ambush = {
id = "ambush",
text = "ui_mcm_soulslike_ambush",
sh = true,
gr = {
{
id = "title",
type = "slide",
link = "ui_options_slider_gameplay_diff",
text = "ui_mcm_soulslike_ambush_title",
size = {512,50},
spacing = 20
},
{
id = "desc_mcm",
type = "desc",
text = "ui_mcm_soulslike_ambush_description",
clr = {255, 255 ,255 ,255},
},
{
id = "mutant_ambush_chance",
type = "track",
val = 2,
min = 0.0,
max = 1.0,
step = 0.01,
def = 0.25
},
{
id = "allow_boar_ambush",
type = "check",
val = 1,
def = true
},
{
id = "allow_flesh_ambush",
type = "check",
val = 1,
def = true
},
{
id = "allow_dogs_ambush",
type = "check",
val = 1,
def = true
},
{
id = "allow_cats_ambush",
type = "check",
val = 1,
def = true
},
{
id = "allow_snorks_ambush",
type = "check",
val = 1,
def = true
},
{
id = "allow_bloodsucker_ambush",
type = "check",
val = 1,
def = true
},
{
id = "allow_burer_ambush",
type = "check",
val = 1,
def = true
},
{
id = "allow_chimera_ambush",
type = "check",
val = 1,
def = true
},
{
id = "allow_controller_ambush",
type = "check",
val = 1,
def = true
},
{
id = "stalker_ambush_chance",
type = "track",
val = 2,
min = 0.0,
max = 1.0,
step = 0.01,
def = 0.25
},
{
id = "allow_stalker_novice_ambush",
type = "check",
val = 1,
def = true
},
{
id = "allow_stalker_advanced_ambush",
type = "check",
val = 1,
def = true
},
{
id = "allow_stalker_veteran_ambush",
type = "check",
val = 1,
def = true
},
{
id = "allow_stalker_sniper_ambush",
type = "check",
val = 1,
def = true
}
},
}
table.insert(op.gr, ambush)
local hardcore = {
id = "hardcore",
text = "ui_mcm_soulslike_hardcore",
sh = true,
gr = {
{
id = "title",
type = "slide",
link = "ui_options_slider_gameplay_diff",
text = "ui_mcm_soulslike_hardcore_title",
size = {512,50},
spacing = 20
},
{
id = "desc_mcm",
type = "desc",
text = "ui_mcm_soulslike_hardcore_save_description",
clr = {255, 255 ,255 ,0},
},
{
id = "is_enabled",
type = "check",
val = 1,
def = false
},
{
id = "override_campfire_hardcore_saves",
type = "check",
val = 1,
def = false
}
},
}
table.insert(op.gr, hardcore)
local debug = {
id = "debug",
text = "ui_mcm_soulslike_debug",
sh = true,
gr = {
{
id = "title",
type = "slide",
link = "ui_options_slider_gameplay_diff",
text = "ui_mcm_soulslike_debug_title",
size = {512,50},
spacing = 20
},
{
id = "is_enabled",
type = "check",
val = 1,
def = false
},
{
id = "enable_tips",
type = "check",
val = 1,
def = false
},
{
id = "debug_hidden_stashes",
type = "check",
val = 1,
def = false
},
{
id = "debug_squad_spawns",
type = "check",
val = 1,
def = false
},
{
id = "debug_item_loss",
type = "check",
val = 1,
def = false
},
{
id = "debug_the_tarkov_looter",
type = "check",
val = 1,
def = false
},
{
id = "debug_the_noloss_scenario",
type = "check",
val = 1,
def = false
},
{
id = "debug_the_default_scenario",
type = "check",
val = 1,
def = false
},
{
id = "debug_the_rf_scenario",
type = "check",
val = 1,
def = false
},
{
id = "debug_the_hidden_stash_scenario",
type = "check",
val = 1,
def = false
},
{
id = "debug_always_spawn_ambush",
type = "check",
val = 1,
def = false
}
},
}
table.insert(op.gr, debug)
return op
end
local function get_config(key, default_when_nil)
local opt = ui_mcm and ui_mcm.get("soulslike/"..key)
if opt == nil then
opt = default_when_nil
end
return opt
end
-- Hardcore
function is_hardcore_save_enabled()
return get_config("hardcore/is_enabled", false)
end
function override_campfire_hardcore_saves()
return get_config("hardcore/override_campfire_hardcore_saves", false)
end
-- Scenarios
function are_looter_npcs_marked()
return get_config("scenarios/looter_npcs_marked", false)
end
function rf_detector_scenario_weight()
return get_config("scenarios/rf_detector_scenario_weight", 0.10)
end
function hidden_stash_scenario_weight()
return get_config("scenarios/hidden_stash_scenario_weight", 0.10)
end
function scattered_stash_scenario_weight()
return get_config("scenarios/scattered_stash_scenario_weight", 0.02)
end
function nearby_dead_stalker_scenario_weight()
return get_config("scenarios/nearby_dead_stalker_scenario_weight", 0.10)
end
-- Items
function get_item_loss_scalar()
return get_config("items/item_loss_scalar", 0.2)
end
function get_item_condition_loss_percent()
return get_config("items/item_condition_loss_scalar", 0.05)
end
function allow_toolkit_loss()
return get_config("items/allow_tool_loss", true)
end
function allow_artifact_loss()
return get_config("items/allow_artifact_loss", true)
end
function allow_headgear_loss()
return get_config("items/allow_headgear_loss", true)
end
function allow_outfit_loss()
return get_config("items/allow_outfit_loss", true)
end
function allow_weapon_loss()
return get_config("items/allow_weapon_loss", true)
end
function get_keep_equipped_items_on_death()
return get_config("items/keep_equipped_items_on_death", false)
end
-- Ambush
function mutant_ambush_chance()
return get_config("ambush/mutant_ambush_chance", 0.5)
end
function stalker_ambush_chance()
return get_config("ambush/stalker_ambush_chance", 0.5)
end
function allow_boar_ambush()
return get_config("ambush/allow_boar_ambush", true)
end
function allow_flesh_ambush()
return get_config("ambush/allow_flesh_ambush", true)
end
function allow_dogs_ambush()
return get_config("ambush/allow_dogs_ambush", true)
end
function allow_cats_ambush()
return get_config("ambush/allow_cats_ambush", true)
end
function allow_snorks_ambush()
return get_config("ambush/allow_snorks_ambush", true)
end
function allow_bloodsucker_ambush()
return get_config("ambush/allow_bloodsucker_ambush", true)
end
function allow_burer_ambush()
return get_config("ambush/allow_burer_ambush", true)
end
function allow_chimera_ambush()
return get_config("ambush/allow_chimera_ambush", true)
end
function allow_controller_ambush()
return get_config("ambush/allow_controller_ambush", true)
end
function allow_stalker_novice_ambush()
return get_config("ambush/allow_stalker_novice_ambush", true)
end
function allow_stalker_advanced_ambush()
return get_config("ambush/allow_stalker_advanced_ambush", true)
end
function allow_stalker_veteran_ambush()
return get_config("ambush/allow_stalker_veteran_ambush", true)
end
function allow_stalker_sniper_ambush()
return get_config("ambush/allow_stalker_sniper_ambush", true)
end
-- Character
function get_health_loss_percent()
return get_config("character/health_loss_on_respawn", 0.75)
end
function rank_loss_percent()
return get_config("character/rank_loss_percent", 0.05)
end
function rep_loss_percent()
return get_config("character/rep_loss_percent", 0.02)
end
-- Debug
function is_debug_enabled()
return get_config("debug/is_enabled", false)
end
function show_debug_tips()
return get_config("debug/enable_tips", false)
end
function debug_hidden_stashes()
return is_debug_enabled() and get_config("debug/debug_hidden_stashes", false)
end
function debug_squad_spawns()
return is_debug_enabled() and get_config("debug/debug_squad_spawns", false)
end
function debug_item_loss()
return is_debug_enabled() and get_config("debug/debug_item_loss", false)
end
function debug_remove_default_scenario()
return is_debug_enabled() and get_config("debug/debug_remove_default_scenario", false)
end
function debug_the_tarkov_looter()
return is_debug_enabled() and get_config("debug/debug_the_tarkov_looter", false)
end
function debug_the_noloss_scenario()
return is_debug_enabled() and get_config("debug/debug_the_noloss_scenario", false)
end
function debug_the_default_scenario()
return is_debug_enabled() and get_config("debug/debug_the_default_scenario", false)
end
function debug_the_rf_scenario()
return is_debug_enabled() and get_config("debug/debug_the_rf_scenario", false)
end
function debug_the_hidden_stash_scenario()
return is_debug_enabled() and get_config("debug/debug_the_hidden_stash_scenario", false)
end
function debug_always_spawn_ambush()
return is_debug_enabled() and get_config("debug/debug_always_spawn_ambush", false)
end