Bug #7318
Altitude limits for ModuleOrbitalSurveyor don't take SoI size into account
10%
Description
ModuleOrbitalSurveyor is what the M700 survey scanner uses for doing an orbital survey.
To perform a survey, the module requires that the ship be in a polar orbit with Ap and Pe within a specified altitude range.
The altitudes involved are affected by the radius of the planet, but are subject to certain restrictions-- for example, the minimum Pe always has to be at least 25 km, regardless of the size of the body (it might be larger if the body is large).
The problem is that the logic for deciding the altitude limits doesn't take into account the size of the SoI. Suppose there's a very small moon orbiting close to a very massive planet. The SoI might be small enough that it's not possible to orbit as high as 25 km, which makes the survey scanner completely unusable.
To fix this: the logic for the ModuleOrbitalSurveyor should take the SoI size into account. Specifically: The "max altitude" specified should never be bigger than the highest possible orbit (i.e. SoI radius minus planet radius), and the "min altitude" must always be lower than the highest possible orbit.
My suggestion: Go ahead and calculate the min/max altitudes as they're done now. Then check the size of the SoI. If the max altitude is higher than the SoI size, reduce it to the SoI size. Then make sure that the min altitude is no more than, say, 90% of the max altitude.
History
#1 Updated by Kasuha over 8 years ago
I assume this is mostly about adding modded planets and moons. But even stock game has issues.
On Duna, low limit is at 32 km and that is in atmosphere. But the scanner won't work if you establish the orbit in atmosphere (even though it's quite possible to establish orbit around Duna at 45 km and not notice anything), it will instead repeat that your orbit needs to be between 32 and 1500 km.
There's realistic reason for 1500 km to be the upper limit. It should be capped at SOI boundary. Lower limit at 25 km seems to be arbitrary to me, though. I believe it should rather follow the lowest level where stable orbit can be established, i.e. the level where time warp becomes possible.
#2 Updated by TriggerAu over 8 years ago
- Status changed from New to Needs Clarification
#3 Updated by Snark over 8 years ago
- Status changed from Needs Clarification to Updated
- % Done changed from 0 to 10
Yes, this is mainly relevant for modded planets. A very tiny moon orbiting close to a primary, such that the moon's SoI is very small, can bump up against that 25 km limit so that it becomes completely impossible to find any orbit for that body where a scan can be done.
The "minimum Pe" requirement should always be smaller than the SoI size, regardless of the minThreshold setting of the ModuleOrbitalSurveyor, or the body's radius. I agree with Kasuha that for bodies with an atmosphere, the minimum Pe should be at least as high as the top of the atmosphere.
The "maximum Ap" amount should also be capped at the SoI boundary. This isn't needed for gameplay reasons (because obviously you won't be able to scan a body if you're outside its SoI), but simply to avoid a misleading error message. Let's say the calculated limit (based on maxThreshold and body radius) is 1500 km, but the SoI is smaller than that. You don't want to print an error message saying "between 25 and 1500 km" if you can't actually go up to 1500 km because the SoI's smaller than that.
#4 Updated by TriggerAu over 8 years ago
Thanks Snark