From 3e5ba446633f6d6cc56b61f117e072d2167c1695 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Tue, 31 Mar 2015 15:35:54 +0200 Subject: [PATCH 1/2] Fix #986 --- src/peep/peep.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/peep/peep.h b/src/peep/peep.h index 0286344365..381e95ea95 100644 --- a/src/peep/peep.h +++ b/src/peep/peep.h @@ -389,7 +389,7 @@ typedef struct { uint8 energy; // 0x38 uint8 energy_growth_rate; // 0x39 uint8 happiness; // 0x3A - sint8 happiness_growth_rate; // 0x3B + uint8 happiness_growth_rate; // 0x3B uint8 nausea; // 0x3C uint8 nausea_growth_rate; // 0x3D uint8 hunger; // 0x3E From 1d7ab54ab89808b0fc4b67903e33c06c2729c244 Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Wed, 15 Apr 2015 19:04:02 +0100 Subject: [PATCH 2/2] Added checks to prevent underflow --- src/peep/peep.c | 10 ++++------ src/windows/guest.c | 3 +-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/peep/peep.c b/src/peep/peep.c index 0f2d33d86e..bbe9e717e7 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -197,8 +197,8 @@ void peep_check_if_lost(rct_peep* peep){ peep->var_F4 = 230; } peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_LOST, 0xFF); - if (peep->happiness_growth_rate < 30) peep->happiness_growth_rate = 0; - else peep->happiness_growth_rate -= 30; + + peep->happiness_growth_rate = max(peep->happiness_growth_rate - 30, 0); } /* rct2: 0x69C26B @@ -210,8 +210,7 @@ void peep_check_cant_find_ride(rct_peep* peep){ if (peep->var_C6 == 30 || peep->var_C6 == 60){ peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_CANT_FIND, peep->guest_heading_to_ride_id); - if (peep->happiness_growth_rate < 30) peep->happiness_growth_rate = 0; - else peep->happiness_growth_rate -= 30; + peep->happiness_growth_rate = max(peep->happiness_growth_rate - 30, 0); } peep->var_C6--; @@ -236,8 +235,7 @@ void peep_check_cant_find_exit(rct_peep* peep){ if (peep->var_C6 == 1){ peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_CANT_FIND_EXIT, 0xFF); - if (peep->happiness_growth_rate < 30) peep->happiness_growth_rate = 0; - else peep->happiness_growth_rate -= 30; + peep->happiness_growth_rate = max(peep->happiness_growth_rate - 30, 0); } if (--peep->var_C6 == 0) peep->var_C6 = 90; diff --git a/src/windows/guest.c b/src/windows/guest.c index 754ea46e18..d36f9d6f9c 100644 --- a/src/windows/guest.c +++ b/src/windows/guest.c @@ -1237,8 +1237,7 @@ void window_guest_overview_tool_down(){ peep->action_sprite_type = 0xFF; peep->var_C4 = 0; - peep->happiness_growth_rate -= 10; - if (peep->happiness_growth_rate < 0)peep->happiness_growth_rate = 0; + peep->happiness_growth_rate = max(peep->happiness_growth_rate - 10, 0); sub_693B58(peep); tool_cancel();