From c01a6611f7c65cd787022a58393cf65e9de9f563 Mon Sep 17 00:00:00 2001 From: actual-nh Date: Thu, 18 Feb 2021 17:03:31 -0500 Subject: [PATCH] Check on weary ticks. This monitors, with weary level transitions, the low_activity_ticks and tick_counter, to see if this can help figure out why weary.tracker is increasing while resting. (cherry picked from commit 4c4b9cdba30ebcbe06236bdcb51a02d16234148a) --- src/character.cpp | 10 ++++++++++ src/character.h | 2 ++ tests/activity_scheduling_helper.cpp | 17 ++++++++++++----- tests/activity_scheduling_helper.h | 5 ++++- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/character.cpp b/src/character.cpp index 18d7c9972f24b..461fa8b40607e 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -5079,6 +5079,16 @@ int Character::weary_intake() const return weary.intake; } +int Character::weary_low_activity_ticks() const +{ + return weary.low_activity_ticks; +} + +int Character::weary_tick_counter() const +{ + return weary.tick_counter; +} + void weariness_tracker::clear() { tracker = 0; diff --git a/src/character.h b/src/character.h index 19768aa3f6cd6..9f0f1df91c38f 100644 --- a/src/character.h +++ b/src/character.h @@ -2732,6 +2732,8 @@ class Character : public Creature, public visitable int weariness() const; int weary_tracker() const; int weary_intake() const; + int weary_low_activity_ticks() const; + int weary_tick_counter() const; float activity_level() const; float exertion_adjusted_move_multiplier( float level = -1.0f ) const; void try_reduce_weariness( float exertion ); diff --git a/tests/activity_scheduling_helper.cpp b/tests/activity_scheduling_helper.cpp index 371acb4139336..94e989bc97b67 100644 --- a/tests/activity_scheduling_helper.cpp +++ b/tests/activity_scheduling_helper.cpp @@ -108,14 +108,17 @@ weariness_events do_activity( tasklist tasks ) int new_weariness = guy.weariness_level(); spent += task.interval; tasks.advance( task.interval ); - // If we're more weary than we were when we started, report it + // If we're more or less weary than we were when we started, report it if( new_weariness != weariness_lvl ) { int new_weary = guy.weariness(); int new_thresh = guy.weary_threshold(); int new_tracker = guy.weary_tracker(); int new_intake = guy.weary_intake(); + int new_low_activity_ticks = guy.weary_low_activity_ticks(); + int new_tick_counter = guy.weary_tick_counter(); activity_log.log( weariness_lvl, new_weariness, spent, - new_weary, new_thresh, new_tracker, new_intake ); + new_weary, new_thresh, new_tracker, new_intake, + new_low_activity_ticks, new_tick_counter ); weariness_lvl = new_weariness; } } @@ -174,7 +177,8 @@ time_duration tasklist::duration() void weariness_events::log( const int old_level, const int new_level, const time_duration &when, const int new_weariness, const int new_threshold, - const int new_tracker, const int new_intake ) + const int new_tracker, const int new_intake, + const int new_low_activity_ticks, const int new_tick_counter ) { weary_transition added; added.from = old_level; @@ -184,6 +188,8 @@ void weariness_events::log( const int old_level, const int new_level, const time added.new_threshold = new_threshold; added.new_tracker = new_tracker; added.new_intake = new_intake; + added.new_low_activity_ticks = new_low_activity_ticks; + added.new_tick_counter = new_tick_counter; transitions.insert( transitions.end(), added ); } @@ -229,10 +235,11 @@ std::string weariness_events::summarize() const { std::string buffer; for( const weary_transition &change : transitions ) { - buffer += string_format( "Transition: Weary lvl %d to %d at %d min (W %d Th %d Tr %d In %d)\n", + buffer += string_format( "Chng: Weary lv %d to %d at %d min (W %d Th %d Tr %d In %d Lt %d Tk %d)\n", change.from, change.to, change.minutes, change.new_weariness, change.new_threshold, - change.new_tracker, change.new_intake ); + change.new_tracker, change.new_intake, + change.new_low_activity_ticks, change.new_tick_counter ); } return buffer; } diff --git a/tests/activity_scheduling_helper.h b/tests/activity_scheduling_helper.h index f1b79789ab8b6..b32c0375677da 100644 --- a/tests/activity_scheduling_helper.h +++ b/tests/activity_scheduling_helper.h @@ -97,13 +97,16 @@ struct weariness_events { int new_threshold = 0; int new_tracker = 0; int new_intake = 0; + int new_low_activity_ticks = 0; + int new_tick_counter = 0; }; std::vector transitions; public: void log( int old_level, int new_level, const time_duration &when, - int new_weariness, int new_threshold, int new_tracker, int new_intake ); + int new_weariness, int new_threshold, int new_tracker, int new_intake, + int new_low_activity_ticks, int new_tick_counter ); // Return the first time a transition between `from` and `to` occurs, in minutes // if around = 0_seconds or equivalent, otherwise return the time closest to around