• 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.
Thank you @ronhatch and @Fox the Apprentice.

After further testing

Code:
        "JumpHeatUnitSize": 6, <---This is a distance for the first half of a distance to heat ratio.
        "JumpHeatPerUnit": 1, <----This is the heat produced in that distance for the second half.
        "JumpHeatMin": 5, <--------Minimum heat produced for any jump.

Set "ExperimentalGridDistance" to 12 to ease testing. Ran "JumpHeatUnitSize" at 3, 6, and 12. I always had the correct heat for each distance jumped, i.e. 3 "dots" or 36m would produce 12, 6, and 3 heat.

"JumpHeatMin" seemed to produce extra heat when set to 0.
1 or 2 points worth.

Griffin used for testing again.
 
Last edited:
This is everything from the DB
unit_approval_Beta
unit_assault
unit_bracket_high
unit_bracket_low
unit_bracket_med
unit_bracket_skirmish
unit_heavy
unit_indirectFire
unit_jumpOK
unit_lance_assassin
unit_lance_support
unit_lance_tank
unit_lance_vanguard
unit_light
unit_mech
unit_medium
unit_noncombatant
unit_ready
unit_release_ksbeta
unit_release_privatebeta
unit_role_brawler
unit_role_flanker
unit_role_scout
unit_role_sniper
unit_tracks
unit_turret
unit_urbie
unit_vehicle
unit_vehicle_apc
unit_vehicle_carrier
unit_vehicle_mobileHQ
unit_weaponless
unit_wheels


unit_weaponless could be useful for an Agro 'Mech mod ;)

Nice work pulling these.

Does the Database by any chance also show every single "statName" that is used for the "upgrade" components (actuators, cockpitMods, gyros, and targetTrackingSystem)?

For example, I am trying to create a new Cockpit upgrade that specifically provides two bonuses. One increases Injury Resist (this is easy, since this already exists) + using the second Bonus to add +1 Initiative (the data for this is described in the Master Tactician Ability file).
 
All I see after the various cockpits are the ComponentTypeID (which is 5) and ComponentSubTypeID (which is 7) .

I tried seaching for statName and StatusEffect but came up with nada.
 
I was looking at the part concerning concentration of fire in CombatGameConstants and I'm wondering if anyone has figured out how these work.

"ClusterChanceOriginalLocationMultiplier": 8,
"ClusterChanceAdjacentMultiplier": 4,
"ClusterChanceNonadjacentMultiplier": 1,

Does higher location multiplier mean it's easier or harder to hit the same part?
 
Regarding custom pilots as starter pilots for the campaign:

How do you tell the game to use the PNG icon created for them and not look for a 3D portrait that doesn't exist?

When I change the SimGameConstants.json from

Code:
        "StartingMechWarriors" : [
            "pilot_sim_starter_glitch",
            "pilot_sim_starter_dekker",
            "pilot_sim_starter_medusa",
            "pilot_sim_starter_behemoth"
        ],
        "StartingMechWarriorPortraits" : [
            "PortraitPreset_glitch",
            "PortraitPreset_dekker",
            "PortraitPreset_medusa",
            "PortraitPreset_behemoth"
        ],

to

Code:
        "StartingMechWarriors" : [
            "pilot_mymod_Pilot1",
            "pilot_mymod_Pilot2",
            "pilot_mymod_Pilot3",
            "pilot_mymod_Pilot4"
        ],
        "StartingMechWarriorPortraits" : [
            "icon_mymod_Pilot1",
            "icon_mymod_Pilot2",
            "icon_mymod_Pilot3",
            "icon_mymod_Pilot4"
        ],

the game goes into eternal loading mode. So it clearly does not like me putting the icon RefIDs for the pilots there. But I want them to use the icons, not try and create 3D Portraits....
Is it even possible to tell the game to use icons instead of portraits here?

And if not, and I have to use the default starting pilots, is there a way to force the game to make my custom pilots available to me for hire the moment I first am allowed to shop for new pilots?
 
More info: Mechwarrior portraits for custom pilots are in the pilotdef entry and the file location is defined in version manifest.
Example given:
Code:
Ada,Sprite,mods/Goonpilotmod/Portraits/Ada.png,14,2018-02-27T00:45:29.0945242Z,2018-04-21T11:38:06.6754456Z,,,False,0,False

Ada is the entry that needs to be in the metadatabase.db for the pilot entry. The third entry is where the image is located.
 
Ah, my mistake. I should have said that all the pilots I made do actually work in Skirmish mode, including their PNG style icons/images. Sorry, Summin Cool. ^_^"
So I know that my entries in the VersionManifest.csv are working and correctly formatted. (Like they were in the Backer Beta.)

The problem for me is that the game seems hellbent on using 3D portraits for the mechwarriors you start out with in the campaign.

Example:

Using the standard starter pilots with the standard starter portraits -> works
Using my custom pilot jsons with my custom images as portraits -> eternal loading mode / doesn't work
Using my custom pilot jsons with the standard starter portraits -> works

So the problem clearly (in my opinion) is that I cannot seem to find a working way to tell the game to use a pilot in the starting lance that does not have a predefined 3D portrait (only a PNG image one).
 
Ah, my mistake. I should have said that all the pilots I made do actually work in Skirmish mode, including their PNG style icons/images. Sorry, Summin Cool. ^_^"
So I know that my entries in the VersionManifest.csv are working and correctly formatted. (Like they were in the Backer Beta.)

The problem for me is that the game seems hellbent on using 3D portraits for the mechwarriors you start out with in the campaign.

Example:

Using the standard starter pilots with the standard starter portraits -> works
Using my custom pilot jsons with my custom images as portraits -> eternal loading mode / doesn't work
Using my custom pilot jsons with the standard starter portraits -> works

So the problem clearly (in my opinion) is that I cannot seem to find a working way to tell the game to use a pilot in the starting lance that does not have a predefined 3D portrait (only a PNG image one).

There is a workaround detailed on the mods reddit that auto fires the starter pilots and hires new ones that you can define to replace them.
 
I was just digging through the battletech folder and had a question - I found a folder called Descriptions/Biome that just contained jsons that included the text description for the biome, but didn't notice anywhere that had files containing how the biomes were defined numerically (e.g. in terms of effect on heat dissipation etc). Anyone know how that is done? Was wondering about making custom biomes.
 
I was looking at the part concerning concentration of fire in CombatGameConstants and I'm wondering if anyone has figured out how these work.

"ClusterChanceOriginalLocationMultiplier": 8,
"ClusterChanceAdjacentMultiplier": 4,
"ClusterChanceNonadjacentMultiplier": 1,

Does higher location multiplier mean it's easier or harder to hit the same part?
Probably easier.

The hit location tables are defined as a set of weights for each location, and the chance of hitting a particular location is (location weight)/(total of all location weights). So most likely the multipliers change those weights before the calculation and roll. You could try setting some of them to zero and see what happens.
 
Anyone else experimenting with the game map? Strange things happen as I make changes :p

Any input is welcome.

Please look at the pics at the bottom of the SUCKos thread - I am just about to add all the extra systems back in again (after having redirected it all to the mods folder) and I'll take a screenshot of that as well.
 
Mostly to consolidate Mod Talks here.

Starting off, and I'd edit this as I go along, I'm looking at the VersionManifest. It already has >2x the items that the Beta VersionManifest has, so... that's a lot of things to go through.

=====
Here, I insert something that I wrote further down the thread that you guys should be aware of:

Be very careful about deploying mods.

The issue I've found while working on my mods is.. best describe with the following:

1. Say you worked out the necessary to introduce a new mech or a new weapon into the game. It works and you can see it in the Skirmish game, and can use it to equip other mechs in the Mechlab. You make up a whole bunch of new mech builds and saves them in the game.

2. A few days later, you decide to rework some aspect of the mod, and for some reason, needed to remove the mech/ weapon. You code up your new work perfectly and loads up the game, and try to go into Skirmish or MechLab.

3. The game goes into stunlock. Checking the logs, you see things like this:

Data.DataManager [ERROR] LoadRequest for THI_WD_Weapon_LaserPulse_Medium of type WeaponDef has an invalid manifest entry. Any requests for this object will fail. (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

Data.DataManager [ERROR] LoadRequest for THI_WD_AmmunitionBox_LBX10C of type AmmunitionBoxDef has an invalid manifest entry. Any requests for this object will fail. (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

4. Try as you might, you can't get the game to go into Skirmish/ Mechlab. You are now faced with the option of a reinstall, which will wipe your campaign progress.

I would just like to point out that i did get into the state of having the wierd missing script errors and the store/mechlab would not open for me. For grins and giggles before doing a complete wipe I deleted the database that is stored under BATTLETECH\BattleTech_Data\StreamingAssets\MDD folder. I took a leap that it would rebuild the database from the transaction log and because I had restored all my messing around it might fix things. IT DID. So if you get into the wierd state like mentioned above give that a try before you delete and reinstall. I am happily finishing my game.
 
Posting again from another thread:

Does anyone know where the value for adjusting 'Guarded' would be? I thought it was "EntrenchedMultiplier" in the 'CombatGameConstants.json' but that doesn't seem to work.

I want to set the damage reduction value to 30% instead of 50%. I have been able to adjust the description text for the abilities in that file but not the actual value.

Thanks!
 
Posting again from another thread:

Does anyone know where the value for adjusting 'Guarded' would be? I thought it was "EntrenchedMultiplier" in the 'CombatGameConstants.json' but that doesn't seem to work.

I want to set the damage reduction value to 30% instead of 50%. I have been able to adjust the description text for the abilities in that file but not the actual value.

Thanks!
Remember that Entrenched and Guarded are two different things, despite the fact that they typically both get applied at the same time. That EntrenchedMultiplier probably changes the stability reduction not damage reduction.

It's entirely possible that they don't have a settable constant for Guarded... my impression is that mostly only parameters that they fiddled with ended up in the JSON files. In any case, I haven't spotted any promising variable names either.
 
KS update 03 May 2018: Btech Roadmap
From the latest KS update:

BATTLETECH Post-Launch Roadmap
1. Compatibility / Performance Investigations
Our launch last week wasn't perfect. A subset of players are experiencing hardware/system compatibility and performance issues that our team is working hard to investigate. Solutions for critical issues are always our top priority, and will be released as soon as they're available and tested. Typically, we will release patches to our public_beta branch on Steam for a few days for testing before we push them to the default branch.

On that note - last Friday we released our first patch to the public_beta branch for testing. Today, that 1.0.1 Patch went live - you can read the full changelog here. We expect to release more patches to public_beta in the coming days and weeks.

2. General BugFix (Late May)
We expect to release at least one general bugfix/improvements patch later in May.

3. Localization (French, German, Russian) and Linux Support
These are both Kickstarter commitments and high priorities for our post-launch roadmap. (Along with a couple other Kickstarter commitments that didn't make it in for launch.) We don't have a more precise ETA yet for these items but will update you as soon as we do.

4. Update #1: Customization & Player Options (June/July)
We're already beginning work on our first larger free Update to BATTLETECH. This Update is all about customization and reacting to common pieces of feedback that we've received from you on the game. Here's a list of items we're currently looking at for Update 1 this summer

--Accelerated Combat Options - We're working on options for players who would like to accelerate the pace of combat missions.

--MechWarrior Customization - We know that many players would like to change the appearance, callsign, name, and voice of all their MechWarriors, not just their Commander. This didn't make it in for launch but we'll be adding it in Update 1

--Granular difficulty settings - A set of discrete options for players to customize the challenge level of the game in different areas.

--MechLab / Store / Salvage Quality-of-Life Improvements - Interface additions to reduce friction when buying and salvaging new items.

--Tutorial-skip Option - Allowing players who have already played the prologue missions to skip those missions when starting a new campaign, and get right to the Leopard.

--Addressing Difficulty Spikes - We'll be working on smoothing out some issues with unexpectedly hard (or easy) content. Not to remove all difficulty variance, but to address clear outliers.

--Live-streaming Quality-of-Life Improvements - Audio persisting when alt-tabbed, for example.

It's important to note that the exact contents of Update 1 may shift during development. Please consider these general directions and priorities. We'll post a more detailed and updated list of what's in the Update closer to its release.

5. More BATTLETECH!!
The above is just the beginning! We'll be continuing with more free Updates after Update 1, and we'd also love to release a larger paid content Expansion or two - but right now we're staying focused on bugfixes and immediate reactions to launch feedback.


So take note of what is being done by the team and review if what you are doing still fits the timeline.
 
Remember that Entrenched and Guarded are two different things, despite the fact that they typically both get applied at the same time. That EntrenchedMultiplier probably changes the stability reduction not damage reduction.

It's entirely possible that they don't have a settable constant for Guarded... my impression is that mostly only parameters that they fiddled with ended up in the JSON files. In any case, I haven't spotted any promising variable names either.

Thanks, Ron. @SQW put it together and I just tested it: it's "GlancingBlowDamageMultiplier" in Combat Constants under the "ResolutionConstants" section.

https://forum.paradoxplaza.com/foru...-how-to-use-a-notepad-try-this.1094232/page-5
 
So regarding my previous question for "statName" defined in the upgraded item files, here's the full example of one of them:

{
"StatName" : null,
"RelativeModifier" : 0,
"AbsoluteModifier" : 0,
"Description" : {
"Cost" : 260000,
"Rarity" : 5,
"Purchasable" : true,
"Manufacturer" : "Majesty M M",
"Model" : "180KL",
"UIName" : "Rangefinder + +",
"Id" : "Gear_Cockpit_Majesty_M_M_180KL",
"Name" : "Majesty M M 180KL Rangefinder ",
"Details" : "All 'Mechs come equipped with a stock cockpit configuration, which can be upgraded for improved performance. Rangefinders increase the range at which targets can be visually acquired for direct targeting or spotting for support fire.",
"Icon" : "uixSvgIcon_equipment_Rangefinder"
},
"BonusValueA" : "+ 100m View Dist.",
"BonusValueB" : "",
"ComponentType" : "Upgrade",
"ComponentSubType" : "NotSet",
"PrefabIdentifier" : "",
"BattleValue" : 0,
"InventorySize" : 1,
"Tonnage" : 0,
"AllowedLocations" : "Head",
"DisallowedLocations" : "All",
"CriticalComponent" : false,
"statusEffects" : [
{
"durationData" : {
"duration" : -1,
"ticksOnActivations" : false,
"useActivationsOfTarget" : false,
"ticksOnEndOfRound" : false,
"ticksOnMovements" : false,
"stackLimit" : -1,
"clearedWhenAttacked" : false
},
"targetingData" : {
"effectTriggerType" : "Passive",
"triggerLimit" : 0,
"extendDurationOnTrigger" : 0,
"specialRules" : "NotSet",
"effectTargetType" : "Creator",
"range" : 0,
"forcePathRebuild" : false,
"forceVisRebuild" : false,
"showInTargetPreview" : false,
"showInStatusPanel" : true
},
"effectType" : "StatisticEffect",
"Description" : {
"Id" : "StatusEffect-Spotting_Gain-T3",
"Name" : "SPOTTING DISTANCE INCREASED",
"Details" : "Increases spotting distance by [AMT]m.",
"Icon" : "uixSvgIcon_equipment_Cockpit"
},
"nature" : "Buff",
"statisticData" : {
"appliesEachTick" : false,
"effectsPersistAfterDestruction" : false,
"statName" : "SpotterDistanceAbsolute",
"operation" : "Float_Add",
"modValue" : "100.0",
"modType" : "System.Single",
"additionalRules" : "NotSet",
"targetCollection" : "NotSet",
"targetWeaponCategory" : "NotSet",
"targetWeaponType" : "NotSet",
"targetAmmoCategory" : "NotSet",
"targetWeaponSubType" : "NotSet"
},
"tagData" : null,
"floatieData" : null,
"actorBurningData" : null,
"vfxData" : null,
"instantModData" : null,
"poorlyMaintainedEffectData" : null
}
],
"ComponentTags" : {
"items" : [
"component_type_variant",
"component_type_variant3"
],
"tagSetSourceFile" : ""
}
}

A couple things here.

1. Where it states "Id" : "StatusEffect-Spotting_Gain-T3" under the effectType, - I'm not quite certain if this is something being called from somewhere else, or it is simply given this unique ID within the json itself. (The other ones for the spotting upgrades are simply StatusEffect-Spotting_Gain-T1 and StatusEffect-Spotting_Gain-T2 , the higher the better; similar names for the other upgrade items)

2. Where it states statName and defines it in this example "SpotterDistanceAbsolute" is definitely calling that from somewhere as a defined attribute since it is adding 100 to the base spotting of the Mech that equips it.
 
A couple things here.

1. Where it states "Id" : "StatusEffect-Spotting_Gain-T3" under the effectType, - I'm not quite certain if this is something being called from somewhere else, or it is simply given this unique ID within the json itself. (The other ones for the spotting upgrades are simply StatusEffect-Spotting_Gain-T1 and StatusEffect-Spotting_Gain-T2 , the higher the better; similar names for the other upgrade items)

2. Where it states statName and defines it in this example "SpotterDistanceAbsolute" is definitely calling that from somewhere as a defined attribute since it is adding 100 to the base spotting of the Mech that equips it.
I’m suspecting some of these definitions are in the code or db, I really need to take a peek into the db. As for the affected stats, some of it is defined or referred in various Def files.
 
I’m suspecting some of these definitions are in the code or db, I really need to take a peek into the db. As for the affected stats, some of it is defined or referred in various Def files.

I'm suspecting code myself. I took a look at the metadatabase file and I could not locate these definitions.

Also, check this out:

NA81ul4.jpg


I totally got a Command Console to work. Well, half-working. Being able to drag a second pilot into the 'Mech will require (most likely) actual programming by delving into the CSharp.

So yeah, I confirmed the following:

The "Id" : "StatusEffect-Spotting_Gain-T3" fields are not called from anywhere, you name this ID whatever you want. Better to be uniform though if creating other Upgrade items.

"statName" is calling a programmed Function, you can input any function found in other files I believe. In this case I input the statName from the pilot AbilityT8 file and it worked here, and it actually bumped the AS7-D-DC to 3 Initiative in battle (same as a Medium). However, I will need to figure out a way to bump this up globally for one's own Lance, although that may be a bit overpowered since Initiative in this game works a little differently than CBT so I may just leave it so bumps up the Initiative only for 'Mech that mounts it.

Another thing I have to figure it out is how to exclude this item from being mounted on Lighs and Mediums.