Bug #26958
New KSP 1.11 repair contracts give too-short durations (ignoring the modifier for what body it's at)
80%
Description
I took a VesselRepair contract for a satellite around Duna. It turns out it was literally impossible to finish because the duration was shorter than how long it takes to get to Duna if you wait for the next Hohmann transfer window to Duna.
I'm attaching my savegame file - the contract in question is this one in the file:
"guid = f217d78d-af1f-49fa-9a99-dfb121a0cffc".
(This savegame is from just after the contract surprised me by expiring so soon, so it's listed as a "DeadlineExpired" contract.)
The issue is this - The Hohmann Kerbin to Duna transfer window occurs once every 2-3 Kerbin years. By the time the next transfer window appeared it was already too late to do the mission. The contract deadline expired halfway en route to Duna.
In general this is a big problem with many of the contracts in KSP - they don't seem to apply a multiplier to Duration depending on how long it takes to get interplanetary transfers to the destination location. Since the math for how long you wait between transfer windows is known give the two planet's relative periods, it should be possible for the contract system to apply a multiplier to the duration that takes this into account, but it doesn't seem to ever do that, leading to contracts being offered that trick the player into thinking they're possible when they're not.
I was going to call this an enhancement request but I really do see it as a bug because of how it makes the game offer players contracts that are not possible and that's not clear unless they get out their calculator and start punching numbers themselves to realize this. That's more than just a 'game balance' issue. That's just the game downright trolling the player.
History
#1 Updated by Dunbaratu almost 4 years ago
- Subject changed from Contract Duration too short when an interplanetary transfer window is needed. to New KSP 1.11 repair contracts give too-short durations (ignoring the modifier for what body it's at)
#2 Updated by Dunbaratu almost 4 years ago
- File screenshot12.png screenshot12.png added
- File screenshot13.png screenshot13.png added
Further investigation seems to indicate that the problem is specific to just the new KSP 1.11 contracts. They have one hardcoded duration and are always exactly 2 years no matter where they're located. Repair something around Kerbin? 2 years. Repair something around Duna? 2 years. Repair something around Jool? 2 years. It's not varying the duration based on the sphere of influence at all. For other contracts it seems to throw in a multiplication by the recoveryValue for the planet it's at, but nothing like that seems to be happening for these new contracts.
I am attaching screen shots with an example about a rover repair contract. The two screen shots are a "before taking contract" and "after taking contract" picture.
#3 Updated by Poodmund almost 4 years ago
I think all 3 of the new contract types: RoverConstruction, OrbitalConstruction and VesselRepair are affected here because they are not allowing for the contract's targetBody to be specified, its just being set as null so therefore the DeadlineDays length is never being weighted relative to the scienceValues.RecoveryValues for the body the contract is specified for.
As an aside, the OrbitalConstruction contract definition looks like it is also incorrectly using values from the class RoverConstruction for all the contract parameters rather than from its own OrbitalConstruction class...
#4 Updated by Poodmund almost 4 years ago
- Status changed from New to Confirmed
- % Done changed from 0 to 10
#5 Updated by Neilski almost 4 years ago
The OrbitalConstructionContract missions are also on the short side: I was offered an Eve contract (to add a part to a satellite) with 1y218d until expiry, which is way too short to wait for a transfer window.
#6 Updated by Poodmund almost 4 years ago
Neilski wrote:
The OrbitalConstructionContract missions are also on the short side: I was offered an Eve contract (to add a part to a satellite) with 1y218d until expiry, which is way too short to wait for a transfer window.
This is because the contract weighting for these 3 contract types is 852 (as specified in Contracts.cfg)... 852 / 426 (426 days in a Kerbal year) = 2 years. If this bug gets resolved an Eve contract of this type would be bumped up to 10 years.
#8 Updated by Neilski almost 4 years ago
Poodmund wrote:
Neilski wrote:
The OrbitalConstructionContract missions are also on the short side: I was offered an Eve contract (to add a part to a satellite) with 1y218d until expiry, which is way too short to wait for a transfer window.
This is because the contract weighting for these 3 contract types is 852 (as specified in Contracts.cfg)... 852 / 426 (426 days in a Kerbal year) = 2 years. If this bug gets resolved an Eve contract of this type would be bumped up to 10 years.
Well, I don't understand how a 2-year contract could reach 1y218d before I accepted it - usually contracts only stay on offer for a few days, no?
#9 Updated by victorr over 3 years ago
- Status changed from Confirmed to Ready to Test
- Target version set to 1.12.0
- % Done changed from 10 to 80
We have made some changes in this last 1.12.0 release and would like some feedback on this issue. Thanks.