• 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.
I really do not understand the numbers, but was able to arrive at the TT 3 heat for jumping, and with a 9 minimum. Since I was getting more heat with a lower "JumpHeatUnitSize", I instead increased it.
Code:
"JumpHeatUnitSize": 12, <---Lower jump heat using a higher number, more with a lower number ???
                            Griffin has 15 heat max jump when set to 12, 30 heat when set to 6, and 60 heat when set to 3.

"JumpHeatPerUnit": 1, <-----Multiplies heat. i.e. Setting to 2 will give 60 heat from a default 30 heat jump
"JumpHeatMin": 9, <---------What it says. Minimum heat produced from any distance jump

Using a Griffin and a Firestarter I jumped using an inline row of dots to count distance jumped. I also did a max jump for each diagonally which produced 15 and 18 heat respectively.
Code:
1 CombatLog.Heat [LOG] Mech Griffin (ec9d2280-ca9a-4d90-8a20-963d8a4c0a39.0) gains 9 heat from jumping

2 CombatLog.Heat [LOG] Mech Firestarter (ebc06b6a-c5a8-4165-95ce-480bcf335570.0) gains 9 heat from jumping

3 CombatLog.Heat [LOG] Mech Firestarter (ebc06b6a-c5a8-4165-95ce-480bcf335570.0) gains 9 heat from jumping

4 CombatLog.Heat [LOG] Mech Griffin (ec9d2280-ca9a-4d90-8a20-963d8a4c0a39.0) gains 9 heat from jumping

5 CombatLog.Heat [LOG] Mech Griffin (ec9d2280-ca9a-4d90-8a20-963d8a4c0a39.0) gains 11 heat from jumping

6 CombatLog.Heat [LOG] Mech Firestarter (ebc06b6a-c5a8-4165-95ce-480bcf335570.0) gains 13 heat from jumping

7 CombatLog.Heat [LOG] Mech Griffin (ec9d2280-ca9a-4d90-8a20-963d8a4c0a39.0) gains 15 heat from jumping <---Max dot jump distance for Griffin

8 CombatLog.Heat [LOG] Mech Firestarter (ebc06b6a-c5a8-4165-95ce-480bcf335570.0) gains 17 heat from jumping <---Max dot jump distance for Firestarter

Is anyone aware of what determines distance traveled per jump jet? Looked in game constants, mech stat constants, jump jet, chassis, mech, and movement files. Saw things on velocity, height, duration, and multipliers. Nothing that seems to define distance.
 
Last edited:
Data Dictionary: Mech Tags
Was tying up loose ends in my mod. So I wrote up a quick script to comb through Mechdef for Mech Tags. Might as well leave it here:

BLACKLISTED
KSBeta
unit_assault
unit_fallback
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_ready
unit_release
unit_role_brawler
unit_role_scout
unit_role_sniper
unit_urbie
 
Alright. So the method the games defines and loads pilots is through a spreadsheet called metadatabase.db which then assigns tags (UUIDs) and IDs. This spreadsheet loads in the pilot from the version manifest and the pilot json files.

The metadatabase.db file is found in the streamingassets/MDD folder

The method described here:http://btmodding.warriorsblood.com/index.php?title=Add_Pilots is fine, but it is missing a few steps.

First off, set up the .json files for your pilots and edit the version manifest.

then you need to create a script for the database in your mod. The format follows the transactions.sql file found in streamingassets/MDD/data
Code:
BEGIN TRANSACTION;
INSERT INTO "PilotDef" VALUES('pilot_ronin_Beef','Beef','Apex','f99a5b92-6347-47c5-870f-8b093af17feb',1);
INSERT INTO "PilotDef" VALUES('pilot_ronin_Ada','Ada','Apex','248d0fbc-b2aa-4042-beb1-259b35fd2f9f',1);
INSERT INTO "PilotDef" VALUES('pilot_ronin_Agentice','Agentice','Apex','af8fdd30-21c0-40d0-949a-25ff8eba40ed',1);
INSERT INTO "PilotDef" VALUES('pilot_ronin_Browncoat','Browncoat','Apex','b3b3de7c-dc8c-4594-8bed-e297e956e112',1);
INSERT INTO "PilotDef" VALUES('pilot_ronin_Froy','Froy','Apex','43d6eae7-ea1a-4a7a-a375-426a398c98af',1);
INSERT INTO "PilotDef" VALUES('pilot_ronin_Grim','Grim','Apex','7fca2924-0691-44c7-af2a-36ed72d9a716',1);
INSERT INTO "PilotDef" VALUES('pilot_ronin_Jack','Jack','Apex','f262a042-693a-46cb-bb77-8112f639b1e1',1);
INSERT INTO "PilotDef" VALUES('pilot_ronin_Roboprancer','Roboprancer','Apex','09cdb520-9610-4bc1-9262-7ee6c15293f7',1);
INSERT INTO "PilotDef" VALUES('pilot_ronin_Scorp','Scorp','Apex','a7549327-c333-46cd-8fa2-e5615546571f',1);
INSERT INTO "PilotDef" VALUES('pilot_ronin_Tiny','Tiny','Apex','a11c5e72-5ce7-497f-b8f6-10a8346259d9',1);

INSERT INTO "Tagset" VALUES('f99a5b92-6347-47c5-870f-8b093af17feb',6);
INSERT INTO "Tagset" VALUES('248d0fbc-b2aa-4042-beb1-259b35fd2f9f',6);
INSERT INTO "Tagset" VALUES('af8fdd30-21c0-40d0-949a-25ff8eba40ed',6);
INSERT INTO "Tagset" VALUES('b3b3de7c-dc8c-4594-8bed-e297e956e112',6);
INSERT INTO "Tagset" VALUES('43d6eae7-ea1a-4a7a-a375-426a398c98af',6);
INSERT INTO "Tagset" VALUES('7fca2924-0691-44c7-af2a-36ed72d9a716',6);
INSERT INTO "Tagset" VALUES('f262a042-693a-46cb-bb77-8112f639b1e1',6);
INSERT INTO "Tagset" VALUES('09cdb520-9610-4bc1-9262-7ee6c15293f7',6);
INSERT INTO "Tagset" VALUES('a7549327-c333-46cd-8fa2-e5615546571f',6);
INSERT INTO "Tagset" VALUES('a11c5e72-5ce7-497f-b8f6-10a8346259d9',6);
COMMIT;

You absolutely need the pilotdef additions and the Tagset additions for this to work.

When you open the database using a relevant tool, (SQL lite does the job fine.) You then need to apply the entries into the metadatabase.db by running the script above using SQL lite or a similar program.

For custom UUIDs there are generators on the net but they may or may not work as they aren't guaranteed to be truly unique. Lastly, the UUIDs can overlap between mods, which will be a potential clash between two mods as the Tagset sheet contains all the tags for every entity in the game.

Recommended Tools: notepad++ SQLite

It's somewhat recommended you follow the same format if you plan on creating a mod that's easily shareable.

Attached is a mod I'm currently working on. Method of installation is to copy the version manifest data over to the one in the game files, insert the mod into streamingassets/mods
(create the folder if you don't have it already) Then to run SQL lite to introduce the entries. I haven't gotten around the pilots icons yet. More to come when I do.

The method you add the entries is by first opening the metadatabase.db file, opening the script and then running the sql script under the "Execute SQL" tab
 

Attachments

  • Goonpilotmod.7z
    3,6 KB · Views: 15
Didn't realize this subforum was the correct one for modding purposes, reposting from a thread I erroneously made on the main forum:

Anyone know how to change the aesthetic rate of fire for autocannons? It seems that the game is able to effortlessly mix the firing sounds and animations regardless of what value I set the projectile count to, however I have no idea how to reduce the rate of fire so that they aren't rattling off 3 round bursts in a blink. It's not the "AttackRecoil" variable, is it?

Trying to replicate the Beta autocannon behavior because it was just better.


The modding wiki doesn't seem to know what AttackRecoil does.
 
Anyone know how to change the aesthetic rate of fire for autocannons? It seems that the game is able to effortlessly mix the firing sounds and animations regardless of what value I set the projectile count to, however I have no idea how to reduce the rate of fire so that they aren't rattling off 3 round bursts in a blink. It's not the "AttackRecoil" variable, is it?

Trying to replicate the Beta autocannon behavior because it was just better.
It should be "ProjectilesPerShot" in the relevant weapons def json. This is cosmetic and does not affect ammo expenditure or damage inflicted.

Specifically for Autocannons, don't change "ShotsWhenFired", that would trigger bad behaviour.
 
It should be "ProjectilesPerShot" in the relevant weapons def json. This is cosmetic and does not affect ammo expenditure or damage inflicted.

Specifically for Autocannons, don't change "ShotsWhenFired", that would trigger bad behaviour.
ProjectilesPerShot is what I've been changing. What is annoying me is the absurd cyclic rate of fire of ACs in the release version compared to the slow, steady streams of tracers from the Beta. Best I can do with changing this value is going from BRAP to BRAAAAAAP, but it sounds terrible either way. Well okay, only AC/5s are that bad for some reason, AC/10s and 20s do sound nice at 8+ rounds fired but still kind of fast. Worst case scenario is that this is hardcoded and maybe also affected by framerate, because I've noticed some slight variance every now and then.

Edit: seems like AttackRecoil does nothing substantial for this, must be something else that is really subtle. Set all of them to 10 and noticed zilch.
 
Last edited:
I really do not understand the numbers, but was able to arrive at the TT 3 heat for jumping, and with a 9 minimum. Since I was getting more heat with a lower "JumpHeatUnitSize", I instead increased it.
Code:
"JumpHeatUnitSize": 12, <---Lower jump heat using a higher number, more with a lower number ???
                            Griffin has 15 heat max jump when set to 12, 30 heat when set to 6, and 60 heat when set to 3.

"JumpHeatPerUnit": 1, <-----Multiplies heat. i.e. Setting to 2 will give 60 heat from a default 30 heat jump
"JumpHeatMin": 9, <---------What it says. Minimum heat produced from any distance jump
[...]
Is anyone aware of what determines distance traveled per jump jet? Looked in game constants, mech stat constants, jump jet, chassis, mech, and movement files. Saw things on velocity, height, duration, and multipliers. Nothing that seems to define distance.

I think JumpHeatUnitSize is the distance you get per "Unit".

So you get 12 X per "Unit", and 1 heat per "Unit", which gives you a ratio of 1 heat increase for every X. Which means you just need to find X (possibly meters? Probably not dots. I cant remember, but I think the dots were 25 meters apart).
 
Was tying up loose ends in my mod. So I wrote up a quick script to comb through Mechdef for Mech Tags. Might as well leave it here:

BLACKLISTED
KSBeta
unit_assault
unit_fallback
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_ready
unit_release
unit_role_brawler
unit_role_scout
unit_role_sniper
unit_urbie

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 ;)
 
I think JumpHeatUnitSize is the distance you get per "Unit".

So you get 12 X per "Unit", and 1 heat per "Unit", which gives you a ratio of 1 heat increase for every X. Which means you just need to find X (possibly meters? Probably not dots. I cant remember, but I think the dots were 25 meters apart).
Yeah, I think the unit size is the distance in meters that counts as one unit of jumping. The grid is a 24-meter grid, but it's a hexagonal grid so the math gets more... interesting... than with a square grid. Also height changes could factor in, which would make it harder to understand what's going on.

If you want to try it with a tighter grid, it might help figure out the formula more exactly. In the CombatGameConstants file, it's the ExperimentalGridDistance parameter near the end.

You can see in the log files that all movement matches the expected grid spacing. IIRC, it was X always being a multiple of half the grid distance, Z always being a multiple of the grid distance that makes sense with hexagons (don't recall at the moment what the constant is and don't want to take the time to figure it out again), and Y having no visible constraints... but presumably being constrained by terrain height.
 
I've got new Star Systems added to the main map - you can see multiple new star system "dots" over by Taurus.

I have specific call outs on the screen to 2 of the new systems (Megaris and Woogi).

ExpandedMap.png
 
Still working that out - but it looks like the store is linked to the shopdef files, which in turn appear to be linked to the planet traits.

Some are based off the planetary affiliation (Davion, Magistry, Taurian, etc), others are based off the industry (mining), others on secondary traits/notes (battlefield, starleague).

Further, some are specific to the planet itself - so it looks like we may be able to custom tailor a shop to a specific planet. This is noticeable in the campaign itself when we liberate certain worlds they talk about a stockpile of "X" equipment that was found, and it shows up in the store.

Does that help?
 
I think JumpHeatUnitSize is the distance you get per "Unit".

So you get 12 X per "Unit", and 1 heat per "Unit", which gives you a ratio of 1 heat increase for every X. Which means you just need to find X (possibly meters? Probably not dots. I cant remember, but I think the dots were 25 meters apart).

Sadly it doesn't. Modifying that value only effects the amount of heat each jet produces. The distance able to jump was the same at each of the different values I gave it.

Going to start messing with some of the other variables. Possibly it is labeled velocity, duration, or something, instead of distance like walking/sprinting in the movedef.

On a related note I have converted all mechs/vehicles to their TT run and sprint distances. Overall you get more distance for walking, but a little less for sprinting.
 
Last edited:
On a related note I have converted all mechs/vehicles to their TT run and sprint distances. Overall you get more distance for walking, but a little less for sprinting.

Were any horribly off in either field?
 
Were any horribly off in either field?

Code:
2/3        BT 95/165         TT 60/85    Urbanmech
3/5        BT 95/165         TT 105/130  Atlas
4/6        BT 120/200        TT 125/170  Centurion
5/8        BT 140/240        TT 170/215  Wolverine
6/9        BT 165/275        TT 190/255  Commando
7/11       BT 190/315        TT 235/300  Jenner
8/12       BT 210/350        TT 255/345  Locust
10/15      BT 260/400        TT 320/430  Swiftwind Scout Car

The Atlas Run numbers look as if HBS did this,

Code:
Walk(Run) = Walk MP * 1.5(not rounded up) * 10.8 * 2

Not sure how they calculated the rest.

The TT formulas I used are,

Code:
Run = Walk MP * 1.5(round up to nearest whole number) * 10.8 * 2
Sprint = Walk MP * 21.6 * 2

All are rounded down, HBS and TT, to the nearest 0 or 5.

Disregard. Don't know why I converted everything to kph.
 
Last edited:
I think JumpHeatUnitSize is the distance you get per "Unit".

So you get 12 X per "Unit", and 1 heat per "Unit", which gives you a ratio of 1 heat increase for every X. Which means you just need to find X (possibly meters? Probably not dots. I cant remember, but I think the dots were 25 meters apart).

You misunderstand what I meant. I only meant that it affects at which points in the jump you gain increased heat.

My bad I misread that when I was skimming through. "ExperimentalGridDistance" is set to 24. My heat numbers are probably off anyway with jump being farther than each mech's run speed. In TT jump distance is limited to walk speed. So if an HBS BT Jump is twice (example) TT Walk then 30 heat for a Grifin jump should be normal. 10 hexes for 30 heat instead of 5 hexes for 15 heat.

Reason I was looking for the overall distance set for each jump jet.
 
Last edited:
On another note, I was able to add 2 more Evasive Charges for any unit that can reach the theoretical max of 8. 6 total for movement, +1 for jumping, and +1 for Pilot Skill Evasive. I brute forced it into the piloting traits and game constants to increase the number that can be built by 2 instead of 1 at Piloting 6 and 10.

These are the changes I made to achieve that.
Code:
{
    "Description" : {
        "Id" : "TraitDefEvasiveChargeAddOne",
        "Name" : "Increased Evasion Cap",
        "Details" : "PASSIVE: 'Mechs piloted by this MechWarrior have their EVASIVE charge cap increased by 2.",
        "Icon" : "uixSvgIcon_ability_mastertactician"
    },
    "Type" : "EvasionCap",
    "ShortDesc" : "+ 2 Max Evasion",
    "DisplayParams" : "ShowInPilotToolTip",
    "ActivationTime" : "Passive",
    "EffectData" :
    [
        {
            "durationData" :
            {
                "duration" : -1
            },
            "targetingData" :
            {
                "effectTriggerType" : "OnActivation",
                "effectTargetType" : "Creator"
            },
            "effectType" : "StatisticEffect",
            "Description" :
            {
                "Id" : "TraitDefEvasiveChargeAddOne",
                "Name" : "Increased Evasion Cap",
                "Details" : "EVASIVE charge cap increased by 2",
                "Icon" : "uixSvgIcon_ability_mastertactician"
            },
            "statisticData" :
            {
                "statName" : "MaxEvasivePips",
                "operation" : "Int_Add",
                "modValue" : "2",
                "modType" : "System.Int32"
            },
            "nature" : "Buff"
        }
    ]
}
Code:
{
    "Description" : {
        "Id" : "TraitDefEvasiveChargeAddTwo",
        "Name" : "Increased Evasion Cap",
        "Details" : "PASSIVE: 'Mechs piloted by this MechWarrior have their EVASIVE charge cap increased by 2.",
        "Icon" : "uixSvgIcon_ability_mastertactician"
    },
    "Type" : "EvasionCap",
    "ShortDesc" : "+ 4 Max Evasion",
    "DisplayParams" : "ShowInPilotToolTip",
    "ActivationTime" : "Passive",
    "EffectData" :
    [
        {
            "durationData" :
            {
                "duration" : -1
            },
            "targetingData" :
            {
                "effectTriggerType" : "OnActivation",
                "effectTargetType" : "Creator"
            },
            "effectType" : "StatisticEffect",
            "Description" :
            {
                "Id" : "TraitDefEvasiveChargeAddOne",
                "Name" : "Increased Evasion Cap",
                "Details" : "EVASIVE charge cap increased by 2",
                "Icon" : "uixSvgIcon_ability_mastertactician"
            },
            "statisticData" :
            {
                "statName" : "MaxEvasivePips",
                "operation" : "Int_Add",
                "modValue" : "2",
                "modType" : "System.Int32"
            },
            "nature" : "Buff"
        }
    ]
}
Then in "CombatGameConstants" under To-Hit.
Code:
        "EvasivePipsMovingTarget":
        [
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8
        ],
        "ToHitMovingPipUMs":
        [
            2,
            4,
            6,
            8,
            10,
            12,
            14,
            16
        ],
        "ToHitMovingTargetStrings":
        [
            "1 EVASIVE charge: +{0} Difficulty to hit this unit with ranged attacks.",
            "2 EVASIVE charges: +{0} Difficulty to hit this unit with ranged attacks.",
            "3 EVASIVE charges: +{0} Difficulty to hit this unit with ranged attacks.",
            "4 EVASIVE charges: +{0} Difficulty to hit this unit with ranged attacks.",
            "5 EVASIVE charges: +{0} Difficulty to hit this unit with ranged attacks.",
            "6 EVASIVE charges: +{0} Difficulty to hit this unit with ranged attacks.",
            "7 EVASIVE charges: +{0} Difficulty to hit this unit with ranged attacks.",
            "8 EVASIVE charges: +{0} Difficulty to hit this unit with ranged attacks."
        ],
Later on when I get a chance I may look into adding 2 more trait steps at Piloting 4 and 8 to add the 2 extra EC.
 
Last edited: