diff --git a/src/peep/peep.c b/src/peep/peep.c index ac3f3270b1..d4e98dc93d 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -8007,8 +8007,9 @@ static bool peep_should_go_on_ride(rct_peep *peep, int rideIndex, int entranceNu } } - // Peeps won't go on certain rides while it's raining. - if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_RAIN_LEVEL, uint8) != 0 && ride->var_114 < 96) { + // Peeps won't go on rides that aren't sufficiently undercover while it's raining. + // The threshold is fairly low and only requires about 10-15% of the ride to be undercover. + if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_RAIN_LEVEL, uint8) != 0 && (ride->undercover_portion >> 5) < 3) { if (peepAtRide) { peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_NOT_WHILE_RAINING, rideIndex); if (peep->happiness_growth_rate >= 64) { diff --git a/src/ride/ride.h b/src/ride/ride.h index d764b1df48..a1981d825d 100644 --- a/src/ride/ride.h +++ b/src/ride/ride.h @@ -236,8 +236,9 @@ typedef struct { union { uint8 inversions; // 0x114 (???X XXXX) uint8 holes; // 0x114 (???X XXXX) - // This has something to do with how much of the ride is undercover. - uint8 var_114; + // The undercover portion is a very rough approximation of how much of the ride is undercover. + // It reaches the maximum value of 7 at about 50% undercover and doesn't increase beyond that. + uint8 undercover_portion; // 0x114 (XXX?-????) }; uint8 drops; // 0x115 (??XX XXXX) uint8 var_116;