One thing that would be *super* helpful for trying to support engineer mods is if you could provide your API exports just like this, but also tell us the actual final attribute values as displayed in the in-game outfitter (or just a screenshot of viewing the module in the outfitter, where it lists the modified attribute values). If we can get some good sample data we should be able to figure out how these modifiers stack, for example whether all the mod_mass modifiers are added together before being applied to the module base mass, or if they're stacked multiplicatively.
I will try to gather some data about this later this evening. If I can just remember...
Here is some data from the FSD in my Cutter
From the outfitting screen:
Code:
Attribute Unmodified Current
Mass: 80.00T 93.34T +16.7%
Integrity: 164 127 -22.3%
Power Draw: 0.90MW 1.11MW +23.5%
Optimised Mass: 2,700T 3,960.1T +46.7%
Thermal Load: 43.0/S 42.7/S -0.7%
Boot time: 10S
Max Fuel Per Jump: 12.80T
From the relevant section of the full raw data generated by EDMC:
Code:
"FrameShiftDrive": {
"module": {
"ammo": {
"clip": null,
"hopper": null
},
"free": false,
"health": 1000000,
"id": 128064132,
"modifiers": {
"engineerID": 300100,
"id": 5279,
"modifiers": [
{
"name": "mod_mass",
"type": 1,
"value": 0.20000000298023
},
{
"name": "mod_health",
"type": 1,
"value": -0.22322452068329
},
{
"name": "mod_passive_power",
"type": 1,
"value": 0.23471972346306
},
{
"name": "mod_fsd_optimised_mass",
"type": 1,
"value": 0.46669977903366
},
{
"name": "mod_mass",
"type": 2,
"value": -0.027718868106604
},
{
"name": "mod_fsd_heat_rate",
"type": 2,
"value": -0.0069338977336884
}
],
"moduleTags": [
16
],
"recipeID": 128673694,
"slotIndex": 52
},
"name": "Int_Hyperdrive_Size7_Class5",
"on": true,
"priority": 0,
"recipeLevel": 5,
"recipeName": "FSD_LongRange",
"recipeValue": 0,
"unloaned": 46160201,
"value": 46160201
}
},
Of course, I had to start playing with some numbers. I think that
mod_health,
mod_passive_power and
mod_fsd_heat_rate are pretty self-explanatory. The only thing that is not clear are the 2
mod_mass entries in the XML.
So, I took 80 original tons for the mass of the FSD time 0.2 = 16. 80 + 16 = 96. Then, I took the
mod_mass "
type 2" and did 96 *0.0277 = 2.6592. 96 - 2.65 = 93.34. The same value that is reported for the new mass of the FSD.
For the power, the original value was 0.9. The
mod_passive_power "type 1" is 0.2347. 0.9 * 0.2347 = 0.2112. 0.9 + 0.2112 = 1.1112 with is the actual power used by the FSD.
Optimized mass was originally 2,700 tons. 2700 * 0.4666 (
mod_fsd_optimised_mass) = 1259.82. 2700 + 1259.82 = 3959.82 (rounded to 3960).
Integrity was originally 164. The
mod_health of "type 1" is -0.2232. 164 * -0.2232 = 127.3952, the actual value for integrity.
It seems that the "type 1" mods are calculated first, then the "type 2" and, possibly the "type 3".
In any case, everything seems pretty obvious, at least for the FSD...
Trying the thrusters who had grade 1 dirty drive mod:
Code:
Attribute Unmodified Current
Integrity 120 117 -2.3%
Power Draw 8.10MW 8.22MW +1.4%
Optimal Mass 2520.0T 2488.6T -1.2%
Optimal Multiplier 100% 114% +14.2%
Thermal Load 1.3/S 1.7/S +33.0%
Minimum Mass: 1,244.3T
Maximum Mass: 3,732.9T
Minimum Multiplier: 98%
Maximum Multiplier: 121%
Thrusters section from raw data XML:
Code:
"MainEngines": {
"module": {
"ammo": {
"clip": 0,
"hopper": 0
},
"free": false,
"health": 1000000,
"id": 128064099,
"modifiers": {
"engineerID": 300100,
"id": 5287,
"modifiers": [
{
"name": "mod_engine_mass_curve_multiplier",
"type": 1,
"value": 0.088761925697327
},
{
"name": "mod_engine_heat",
"type": 1,
"value": 0.18583719432354
},
{
"name": "mod_passive_power",
"type": 1,
"value": 0.014443615451455
},
{
"name": "mod_health",
"type": 1,
"value": -0.02332778647542
},
{
"name": "mod_engine_mass_curve",
"type": 1,
"value": -0.012463860213757
},
{
"name": "trade_engine_curve_mult_engine_heat",
"type": 2,
"value": 0.12129558622837
}
],
"moduleTags": [
17
],
"recipeID": 128673655,
"slotIndex": 51
},
"name": "Int_Engine_Size8_Class2",
"on": true,
"priority": 0,
"recipeLevel": 1,
"recipeName": "Engine_Dirty",
"recipeValue": 0,
"unloaned": 0,
"value": 5419550
}
},
Starting with the
mod_engine_mass_curve which seems to be the optimal mass. The original value was 2,520T. The modifier value is -0.012463860213757. 2520 * -0.012463860213757 = 2488.59 (rounded to 2,488.6).
Power draw: original was 8.1MW. The
mod_passive_power is 0.01444. 8.1 * 0.01444 = 8.216964 (rounded to 8.22).
What I haven't been able to reverse-engineer is the
mod_engine_mass_curve_multiplier. I've tried playing with it but I can't seem to bring the 100% to 114%... Maybe someone else will fill the blank here?
To be honest, if the mods were supported only for the FSD, that would be awesome. Or if we could support the new power requirements of upgraded modules, that would also be great. Because, I don't know about you, but, for me, the biggest problems right now for me with coriolis is that:
1. It cannot predict your jump range and jump distance
2. It cannot report the correct power consumption, which makes module priority useless.
Right now, I'm in my Cutter and have only the current thruster values. I did capture the attributes of my Corvette before doing the dirty drive mod but I can't switch to it at the moment because not enough cargo. Once I can switch to it, I just need to get the raw data from EDMC and then, maybe I'll be able to have a better idea about what the remaining thruster mod means and how it is applied. However, I can tell that from the screenshots I took before and after the thruster upgrade, there are a few values that have changed.