• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

ronhatch

Lt. General
5 Badges
Feb 23, 2018
1.304
2
  • Stellaris
  • BATTLETECH
  • BATTLETECH - Beta Backer
  • BATTLETECH - Backer
  • Crusader Kings III
So this just happened...
Difficulty-Example.png


I love the way that when you lose a mech during a match, you can hope for that lucky pilot survival roll. Back before the difficulty settings menu got added, I knew about the Mech Destruction variable and that it was a percentage (thanks to a comment by Kiva, IIRC). When they added the option, it always bothered me that it was just a toggle while the system supports more nuance.

Turns out those difficulty settings are really flexible. Looks like they create the menu dynamically and allow you to change pretty much any of the game constants. I've confirmed that saves that use options that have been removed still load correctly (presumably they just use defaults for the missing options) and that if the specific selection that was made for an option no longer exists, the save will still load and choose the default option instead.

My revision to the DifficultySettings.json and CareerDifficultySettings.json (both in the Constants folder) looks like this:
Code:
        {
            "ID" : "diff_mechDestruction",
            "Name" : "'Mech Destruction",
            "UIOrder" : 5,
            "Tooltip" : "This setting determines the chance that any 'Mech disabled by the destruction of its center torso will be lost permanently. <color=#F79B26>This setting is intended for veterans and those seeking a significant challenge.</color>",
            "Enabled" : true,
            "Visible" : true,
            "Toggle" : false,
            "StartOnly" : false,
            "DefaultIndex" : 0,
            "Options" : [
                {
                    "ID" : "diff_MD_off",
                    "Name" : "Never",
                    "DifficultyValue" : 0,
                    "DifficultyConstants" : [
                        {
                            "ConstantType" : "Salvage",
                            "ConstantName" : "DestroyedMechRecoveryChance",
                            "ConstantValue" : "1"
                        }
                    ]
                },
                {
                    "ID" : "diff_MD_half",
                    "Name" : "50% Chance",
                    "DifficultyValue" : 0,
                    "DifficultyConstants" : [
                        {
                            "ConstantType" : "Salvage",
                            "ConstantName" : "DestroyedMechRecoveryChance",
                            "ConstantValue" : "0.5"
                        }
                    ]
                },
                {
                    "ID" : "diff_MD_common",
                    "Name" : "75% Chance",
                    "DifficultyValue" : 0,
                    "DifficultyConstants" : [
                        {
                            "ConstantType" : "Salvage",
                            "ConstantName" : "DestroyedMechRecoveryChance",
                            "ConstantValue" : "0.25"
                        }
                    ]
                },
                {
                    "ID" : "diff_MD_usually",
                    "Name" : "90% Chance",
                    "DifficultyValue" : 2,
                    "DifficultyConstants" : [
                        {
                            "ConstantType" : "Salvage",
                            "ConstantName" : "DestroyedMechRecoveryChance",
                            "ConstantValue" : "0.1"
                        }
                    ]
                },
                {
                    "ID" : "diff_MD_on",
                    "Name" : "Always",
                    "DifficultyValue" : 2,
                    "DifficultyConstants" : [
                        {
                            "ConstantType" : "Salvage",
                            "ConstantName" : "DestroyedMechRecoveryChance",
                            "ConstantValue" : "0"
                        }
                    ]
                }
        ]
        },
The diff_MD_off and diff_MD_on selections are named that so that existing saves will continue to use whichever setting they had previously been given.

Oh, and I don't know what the "DifficultyValue" parameter does.
 
Last edited:
Some interesting variables inside there. The question is really, can they be dynamically adjusted, or are they static for the entire session/ campaign? Some of the items can reflect macro-economic factors, such as increased availability due to war surplus being put on market, etc. etc.
 
There's a "StartOnly" option that can be set true or false... that determines whether or not it is static for the campaign.

Or did I misunderstand what you're asking?
 
There's a "StartOnly" option that can be set true or false... that determines whether or not it is static for the campaign.

Or did I misunderstand what you're asking?
Partially. Does that mean that it's set once and never changes? It would be interesting if for example, for contracts against a faction which really, REALLY dislike you, the chance of Mechwarrior death on destruction is significantly increased (due to forces more willing to fight to the bitter end, or the Combine's Death to Mercenaries order). But for this to happen, the system must be context sensitive and be able to adjust these factors on the fly.
 
Partially. Does that mean that it's set once and never changes? It would be interesting if for example, for contracts against a faction which really, REALLY dislike you, the chance of Mechwarrior death on destruction is significantly increased (due to forces more willing to fight to the bitter end, or the Combine's Death to Mercenaries order). But for this to happen, the system must be context sensitive and be able to adjust these factors on the fly.
Got it.

You can change it from the menu at any time (in this case, anyway, since I haven't set "StartOnly"), but having it depend on other in-game factors isn't something that's possible when you're modding only the JSON files.