diff options
-rw-r--r-- | planner.c | 5 | ||||
-rw-r--r-- | pref.h | 1 | ||||
-rw-r--r-- | subsurfacestartup.c | 1 |
3 files changed, 7 insertions, 0 deletions
@@ -879,6 +879,11 @@ bool trial_ascent(int trial_depth, int stoplevel, int avg_depth, int bottom_time bool clear_to_ascend = true; char *trial_cache = NULL; + // Don't do a trail ascent but check if the ceiling is above the next stoplevel. + // This does not sound like a relevant question but it seems the original VPM-B implementation does that. + if (prefs.check_ceiling_before_ascent) + return (deco_allowed_depth(tissue_tolerance, surface_pressure, &displayed_dive, 1) <= stoplevel); + cache_deco_state(tissue_tolerance, &trial_cache); while (trial_depth > stoplevel) { int deltad = ascent_velocity(trial_depth, avg_depth, bottom_time) * TIMESTEP; @@ -97,6 +97,7 @@ struct preferences { bool display_transitions; bool safetystop; bool switch_at_req_stop; + bool check_ceiling_before_ascent; int reserve_gas; int min_switch_duration; // seconds int bottomsac; diff --git a/subsurfacestartup.c b/subsurfacestartup.c index 18d00d374..ba0969a10 100644 --- a/subsurfacestartup.c +++ b/subsurfacestartup.c @@ -48,6 +48,7 @@ struct preferences default_prefs = { .doo2breaks = false, .drop_stone_mode = false, .switch_at_req_stop = false, + .check_ceiling_before_ascent = false, .min_switch_duration = 60, .last_stop = false, .verbatim_plan = false, |