summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--planner.c5
-rw-r--r--pref.h1
-rw-r--r--subsurfacestartup.c1
3 files changed, 7 insertions, 0 deletions
diff --git a/planner.c b/planner.c
index d6efb61f1..a4aacc053 100644
--- a/planner.c
+++ b/planner.c
@@ -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;
diff --git a/pref.h b/pref.h
index e471add73..953003a2d 100644
--- a/pref.h
+++ b/pref.h
@@ -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,