From 5f799ac6c4ec35e947168759c9fdc428f0765d4e Mon Sep 17 00:00:00 2001 From: e-foley Date: Mon, 2 Nov 2015 20:23:22 -0800 Subject: [PATCH] contain rating mods in pp directives --- src/ride/ride_ratings.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/ride/ride_ratings.c b/src/ride/ride_ratings.c index c24642406b..696896d50b 100644 --- a/src/ride/ride_ratings.c +++ b/src/ride/ride_ratings.c @@ -624,6 +624,15 @@ static void ride_ratings_calculate(rct_ride *ride) calcFunc(ride); } + #ifdef ORIGINAL_RATINGS + if (ride->ratings.excitement != -1) { + // Address underflows allowed by original RCT2 code + ride->ratings.excitement = max(0, ride->ratings.excitement); + ride->ratings.intensity = max(0, ride->ratings.intensity); + ride->ratings.nausea = max(0, ride->ratings.nausea); + } + #endif + // Original ride calculation // calcFunc = RCT2_ADDRESS(0x0097E050, ride_ratings_calculation)[ride->type]; // RCT2 CALLPROC X((int)calcFunc, 0, 0, 0, 0, 0, (int)ride, 0); @@ -786,6 +795,21 @@ static void ride_ratings_apply_adjustments(rct_ride *ride, rating_tuple *ratings ratings->nausea += ((ratings->nausea * rideEntry->nausea_multipler ) >> 7); // Apply total air time + #ifdef ORIGINAL_RATINGS + if (RideData4[ride->type].flags & RIDE_TYPE_FLAG4_HAS_AIR_TIME) { + uint16 totalAirTime = ride->total_air_time; + if (rideEntry->flags & RIDE_ENTRY_FLAG_11) { + if (totalAirTime >= 96) { + totalAirTime -= 96; + ratings->excitement -= totalAirTime / 8; + ratings->nausea += totalAirTime / 16; + } + } else { + ratings->excitement += totalAirTime / 8; + ratings->nausea += totalAirTime / 16; + } + } + #else if (RideData4[ride->type].flags & RIDE_TYPE_FLAG4_HAS_AIR_TIME) { if (rideEntry->flags & RIDE_ENTRY_FLAG_11) { // Limit airtime bonus for heartline twister coaster (see issues #2031 and #2064) @@ -795,6 +819,7 @@ static void ride_ratings_apply_adjustments(rct_ride *ride, rating_tuple *ratings } ratings->nausea += ride->total_air_time / 16; } + #endif } /**