mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #946 from kevinburke/var_198_docs
Name reliability variables
This commit is contained in:
commit
956d6688d3
|
@ -127,7 +127,7 @@ void finance_pay_ride_upkeep()
|
|||
FOR_ALL_RIDES(i, ride) {
|
||||
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_EVER_BEEN_OPENED)) {
|
||||
ride->build_date = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONTH_YEAR, uint16);
|
||||
ride->var_196 = 25855; // durability?
|
||||
ride->reliability = RIDE_INITIAL_RELIABILITY;
|
||||
|
||||
}
|
||||
if (ride->status != RIDE_STATUS_CLOSED && !(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_NO_MONEY)) {
|
||||
|
@ -297,4 +297,4 @@ void game_command_set_current_loan(int* eax, int* ebx, int* ecx, int* edx, int*
|
|||
}
|
||||
|
||||
*ebx = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1309,13 +1309,35 @@ static void ride_inspection_update(rct_ride *ride)
|
|||
}
|
||||
}
|
||||
|
||||
static int get_age_penalty(rct_ride *ride) {
|
||||
int years;
|
||||
years = date_get_year(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONTH_YEAR, uint16) - ride->build_date);
|
||||
switch (years) {
|
||||
case 0:
|
||||
return 0;
|
||||
case 1:
|
||||
return ride->unreliability_factor / 8;
|
||||
case 2:
|
||||
return ride->unreliability_factor / 4;
|
||||
case 3:
|
||||
case 4:
|
||||
return ride->unreliability_factor / 2;
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
return 0;
|
||||
default:
|
||||
return ride->unreliability_factor * 2;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006AC622
|
||||
*/
|
||||
static void ride_breakdown_update(int rideIndex)
|
||||
{
|
||||
int agePenalty, years, ax, breakdownReason;
|
||||
int breakdownReason, unreliabilityAccumulator;
|
||||
rct_ride *ride = GET_RIDE(rideIndex);
|
||||
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_TICKS, uint32) & 255)
|
||||
|
@ -1354,38 +1376,17 @@ static void ride_breakdown_update(int rideIndex)
|
|||
return;
|
||||
|
||||
// Calculate breakdown probability?
|
||||
ax = ride->var_198;
|
||||
agePenalty;
|
||||
years = date_get_year(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONTH_YEAR, uint16) - ride->build_date);
|
||||
switch (years) {
|
||||
case 0:
|
||||
agePenalty = 0;
|
||||
break;
|
||||
case 1:
|
||||
agePenalty = ax >> 3;
|
||||
break;
|
||||
case 2:
|
||||
agePenalty = ax >> 2;
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
agePenalty = ax >> 1;
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
agePenalty = ax >> 0;
|
||||
break;
|
||||
default:
|
||||
agePenalty = ax << 1;
|
||||
break;
|
||||
}
|
||||
ax += agePenalty;
|
||||
ride->var_196 = max(0, ride->var_196 - ax);
|
||||
unreliabilityAccumulator = ride->unreliability_factor + get_age_penalty(ride);
|
||||
ride->reliability = max(0, ride->reliability - unreliabilityAccumulator);
|
||||
ride->var_14D |= 32;
|
||||
|
||||
// Random probability of a breakdown
|
||||
if (ride->var_196 == 0 || (int)(scenario_rand() & 0x2FFFFF) <= 25856 - ride->var_196) {
|
||||
// Random probability of a breakdown. Roughly this is 1 in
|
||||
//
|
||||
// (25000 - reliability) / 3 000 000
|
||||
//
|
||||
// a 0.8% chance, less the breakdown factor which accumulates as the game
|
||||
// continues.
|
||||
if (ride->reliability == 0 || (int)(scenario_rand() & 0x2FFFFF) <= 1 + RIDE_INITIAL_RELIABILITY - ride->reliability) {
|
||||
breakdownReason = ride_get_new_breakdown_problem(ride);
|
||||
if (breakdownReason != -1)
|
||||
ride_prepare_breakdown(rideIndex, breakdownReason);
|
||||
|
@ -1443,9 +1444,8 @@ static int ride_get_new_breakdown_problem(rct_ride *ride)
|
|||
if (ride->num_vehicles != 1)
|
||||
return -1;
|
||||
|
||||
// Again the probability is lower, this time if young or two other unknown reasons...
|
||||
monthsOld = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONTH_YEAR, uint8) - ride->build_date;
|
||||
if (monthsOld < 16 || ride->var_196 > 12800 || ride->lifecycle_flags & RIDE_LIFECYCLE_SIX_FLAGS)
|
||||
if (monthsOld < 16 || ride->reliability > (50 << 8) || ride->lifecycle_flags & RIDE_LIFECYCLE_SIX_FLAGS)
|
||||
return -1;
|
||||
|
||||
return BREAKDOWN_BRAKES_FAILURE;
|
||||
|
|
|
@ -218,7 +218,7 @@ typedef struct {
|
|||
ride_rating nausea; // 0x144
|
||||
};
|
||||
};
|
||||
uint16 reliability; // 0x146
|
||||
uint16 value; // 0x146
|
||||
uint16 var_148;
|
||||
uint8 satisfaction; // 0x14A
|
||||
uint8 satisfaction_time_out; // 0x14B
|
||||
|
@ -253,9 +253,13 @@ typedef struct {
|
|||
uint8 broken_car; // 0x192
|
||||
uint8 breakdown_reason; // 0x193
|
||||
money16 price_secondary; // 0x194
|
||||
uint16 var_196;
|
||||
// used in computing excitement, nausea, etc
|
||||
uint8 var_198;
|
||||
// Starts at RIDE_INITIAL_RELIABILITY and decreases from there. Right shift
|
||||
// this number by 8 to get a reliability percentage 0-100
|
||||
uint16 reliability;
|
||||
// Small constant used to increase the unreliability as the game continues,
|
||||
// making breakdowns more and more likely.
|
||||
uint8 unreliability_factor;
|
||||
// Down time
|
||||
uint8 var_199;
|
||||
uint8 inspection_interval; // 0x19A
|
||||
uint8 last_inspection; // 0x19B
|
||||
|
@ -661,7 +665,8 @@ enum {
|
|||
#define MAX_RIDES 255
|
||||
|
||||
#define MAX_RIDE_MEASUREMENTS 8
|
||||
#define RIDE_RELIABILITY_UNDEFINED 0xFFFF
|
||||
#define RIDE_VALUE_UNDEFINED 0xFFFF
|
||||
#define RIDE_INITIAL_RELIABILITY ((100 << 8) - 1)
|
||||
|
||||
#define STATION_DEPART_FLAG (1 << 7)
|
||||
#define STATION_DEPART_MASK (~STATION_DEPART_FLAG)
|
||||
|
|
|
@ -49,7 +49,7 @@ static void ride_ratings_update_state_4();
|
|||
static void ride_ratings_update_state_5();
|
||||
static void loc_6B5BB2();
|
||||
static void ride_ratings_calculate(rct_ride *ride);
|
||||
static void ride_ratings_reliability_calculate(rct_ride *ride);
|
||||
static void ride_ratings_calculate_value(rct_ride *ride);
|
||||
|
||||
static int sub_6C6402(rct_map_element *mapElement, int *x, int *y, int *z)
|
||||
{
|
||||
|
@ -283,7 +283,7 @@ static void ride_ratings_update_state_3()
|
|||
|
||||
ride_ratings_calculate(ride);
|
||||
RCT2_CALLPROC_X(0x00655F64, 0, 0, 0, 0, 0, (int)ride, 0);
|
||||
ride_ratings_reliability_calculate(ride);
|
||||
ride_ratings_calculate_value(ride);
|
||||
|
||||
window_invalidate_by_number(WC_RIDE, _rideRatingsCurrentRide);
|
||||
_rideRatingsState = RIDE_RATINGS_STATE_FIND_NEXT_RIDE;
|
||||
|
@ -372,7 +372,7 @@ static void ride_ratings_calculate(rct_ride *ride)
|
|||
}
|
||||
}
|
||||
|
||||
static void ride_ratings_reliability_calculate(rct_ride *ride)
|
||||
static void ride_ratings_calculate_value(rct_ride *ride)
|
||||
{
|
||||
rct_ride *ride2;
|
||||
int i, otherRidesOfSameType;
|
||||
|
@ -380,7 +380,7 @@ static void ride_ratings_reliability_calculate(rct_ride *ride)
|
|||
if (ride->excitement == (ride_rating)0xFFFF)
|
||||
return;
|
||||
|
||||
int reliability =
|
||||
int value =
|
||||
(((ride->excitement * RCT2_GLOBAL(0x0097CD1E + (ride->type * 6), sint16)) * 32) >> 15) +
|
||||
(((ride->intensity * RCT2_GLOBAL(0x0097CD20 + (ride->type * 6), sint16)) * 32) >> 15) +
|
||||
(((ride->nausea * RCT2_GLOBAL(0x0097CD22 + (ride->type * 6), sint16)) * 32) >> 15);
|
||||
|
@ -389,19 +389,19 @@ static void ride_ratings_reliability_calculate(rct_ride *ride)
|
|||
|
||||
// New ride reward
|
||||
if (monthsOld <= 12) {
|
||||
reliability += 10;
|
||||
value += 10;
|
||||
if (monthsOld <= 4)
|
||||
reliability += 20;
|
||||
value += 20;
|
||||
}
|
||||
|
||||
// Old ride penalty
|
||||
if (monthsOld >= 40) reliability -= reliability / 4;
|
||||
if (monthsOld >= 64) reliability -= reliability / 4;
|
||||
if (monthsOld >= 40) value -= value / 4;
|
||||
if (monthsOld >= 64) value -= value / 4;
|
||||
if (monthsOld < 200) {
|
||||
if (monthsOld >= 88) reliability -= reliability / 4;
|
||||
if (monthsOld >= 104) reliability -= reliability / 4;
|
||||
if (monthsOld >= 120) reliability -= reliability / 2;
|
||||
if (monthsOld >= 128) reliability -= reliability / 2;
|
||||
if (monthsOld >= 88) value -= value / 4;
|
||||
if (monthsOld >= 104) value -= value / 4;
|
||||
if (monthsOld >= 120) value -= value / 2;
|
||||
if (monthsOld >= 128) value -= value / 2;
|
||||
}
|
||||
|
||||
// Other ride of same type penalty
|
||||
|
@ -411,9 +411,9 @@ static void ride_ratings_reliability_calculate(rct_ride *ride)
|
|||
otherRidesOfSameType++;
|
||||
}
|
||||
if (otherRidesOfSameType > 1)
|
||||
reliability -= reliability / 4;
|
||||
value -= value / 4;
|
||||
|
||||
ride->reliability = max(0, reliability);
|
||||
ride->value = max(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -564,12 +564,16 @@ static void ride_ratings_apply_intensity_penalty(rating_tuple *ratings)
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x00655FD6
|
||||
*/
|
||||
static void sub_655FD6(rct_ride *ride)
|
||||
static void set_unreliability_factor(rct_ride *ride)
|
||||
{
|
||||
ride->var_198 += (ride->lift_hill_speed - RCT2_ADDRESS(0x0097D7C9, uint8)[ride->type * 4]) * 2;
|
||||
// The higher the number, the lower the breakdown
|
||||
// possibility. Range is [3, 7]. values are here:
|
||||
// https://gist.github.com/kevinburke/123977c4884ccadbec70. Consider
|
||||
// inlining this per ride
|
||||
uint8 lift_speed_adjustment = RCT2_ADDRESS(0x0097D7C9, uint8)[ride->type * 4];
|
||||
ride->unreliability_factor += (ride->lift_hill_speed - lift_speed_adjustment) * 2;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -752,13 +756,13 @@ static void ride_ratings_calculate_mine_train_coaster(rct_ride *ride)
|
|||
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED))
|
||||
return;
|
||||
|
||||
ride->var_198 = 16;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 16;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
ratings.excitement = RIDE_RATING(2,90);
|
||||
ratings.intensity = RIDE_RATING(2,30);
|
||||
ratings.nausea = RIDE_RATING(2,10);
|
||||
ratings.excitement = RIDE_RATING(2,90);
|
||||
ratings.intensity = RIDE_RATING(2,30);
|
||||
ratings.nausea = RIDE_RATING(2,10);
|
||||
|
||||
// Apply length of ride factor
|
||||
totalLength = (ride->length[0] + ride->length[1] + ride->length[2] + ride->length[3]) >> 16;
|
||||
|
@ -868,8 +872,8 @@ static void ride_ratings_calculate_maze(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 8;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 8;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
ratings.excitement = RIDE_RATING(1,30);
|
||||
|
@ -901,8 +905,8 @@ static void ride_ratings_calculate_spiral_slide(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 8;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 8;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
ratings.excitement = RIDE_RATING(1,50);
|
||||
|
@ -936,8 +940,8 @@ static void ride_ratings_calculate_pirate_ship(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 10;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 10;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
ratings.excitement = RIDE_RATING(1,50);
|
||||
|
@ -968,8 +972,8 @@ static void ride_ratings_calculate_inverter_ship(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 16;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 16;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
ratings.excitement = RIDE_RATING(2,50);
|
||||
|
@ -1018,8 +1022,8 @@ static void ride_ratings_calculate_merry_go_round(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 16;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 16;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
int unk = ride->var_0D0 * 5;
|
||||
ratings.excitement = unk + RIDE_RATING(0,60) + ((ride_ratings_get_scenery_score(ride) * 19521) >> 16);
|
||||
|
@ -1056,8 +1060,8 @@ static void ride_ratings_calculate_ferris_wheel(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 16;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 16;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
int unk = ride->var_0D0 * 25;
|
||||
ratings.excitement = unk + RIDE_RATING(0,60) + ((ride_ratings_get_scenery_score(ride) * 41831) >> 16);
|
||||
|
@ -1082,8 +1086,8 @@ static void ride_ratings_calculate_motion_simulator(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 21;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 21;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
if (ride->mode == RIDE_MODE_FILM_THRILL_RIDERS) {
|
||||
|
@ -1114,8 +1118,8 @@ static void ride_ratings_calculate_3d_cinema(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 21;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 21;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
switch (ride->mode) {
|
||||
|
@ -1155,8 +1159,8 @@ static void ride_ratings_calculate_top_spin(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 19;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 19;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
switch (ride->mode) {
|
||||
|
@ -1198,8 +1202,8 @@ static void ride_ratings_calculate_space_rings(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 7;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 7;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
ratings.excitement = RIDE_RATING(1,50);
|
||||
|
@ -1228,8 +1232,8 @@ static void ride_ratings_calculate_elevator(rct_ride *ride)
|
|||
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED))
|
||||
return;
|
||||
|
||||
ride->var_198 = 15;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 15;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
ratings.excitement = RIDE_RATING(1,11);
|
||||
|
@ -1270,8 +1274,8 @@ static void ride_ratings_calculate_twist(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 16;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 16;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
ratings.excitement = RIDE_RATING(1,13);
|
||||
|
@ -1302,8 +1306,8 @@ static void ride_ratings_calculate_haunted_house(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 8;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 8;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
ratings.excitement = RIDE_RATING(3,41);
|
||||
ratings.intensity = RIDE_RATING(1,53);
|
||||
|
@ -1330,8 +1334,8 @@ static void ride_ratings_calculate_mini_golf(rct_ride *ride)
|
|||
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED))
|
||||
return;
|
||||
|
||||
ride->var_198 = 0;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 0;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
ratings.excitement = RIDE_RATING(1,50);
|
||||
|
@ -1391,8 +1395,8 @@ static void ride_ratings_calculate_circus_show(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 9;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 9;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
ratings.excitement = RIDE_RATING(2,10);
|
||||
ratings.intensity = RIDE_RATING(0,30);
|
||||
|
@ -1416,8 +1420,8 @@ static void ride_ratings_calculate_crooked_house(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 5;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 5;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
ratings.excitement = RIDE_RATING(2,15);
|
||||
ratings.intensity = RIDE_RATING(0,62);
|
||||
|
@ -1441,8 +1445,8 @@ static void ride_ratings_calculate_magic_carpet(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 16;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 16;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
ratings.excitement = RIDE_RATING(2,45);
|
||||
|
@ -1473,8 +1477,8 @@ static void ride_ratings_calculate_enterprise(rct_ride *ride)
|
|||
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED;
|
||||
ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS;
|
||||
ride->var_198 = 22;
|
||||
sub_655FD6(ride);
|
||||
ride->unreliability_factor = 22;
|
||||
set_unreliability_factor(ride);
|
||||
|
||||
// Base ratings
|
||||
ratings.excitement = RIDE_RATING(3,60);
|
||||
|
|
|
@ -100,13 +100,13 @@ static void* window_new_campaign_events[] = {
|
|||
uint8 window_new_campaign_rides[MAX_RIDES];
|
||||
uint8 window_new_campaign_shop_items[64];
|
||||
|
||||
int ride_reliability_compare(const void *a, const void *b)
|
||||
int ride_value_compare(const void *a, const void *b)
|
||||
{
|
||||
rct_ride *rideA, *rideB;
|
||||
|
||||
rideA = GET_RIDE(*((uint8*)a));
|
||||
rideB = GET_RIDE(*((uint8*)b));
|
||||
return rideB->reliability - rideA->reliability;
|
||||
return rideB->value - rideA->value;
|
||||
}
|
||||
|
||||
int ride_name_compare(const void *a, const void *b)
|
||||
|
@ -179,7 +179,7 @@ void window_new_campaign_open(sint16 campaignType)
|
|||
|
||||
// Take top 40 most reliable rides
|
||||
if (numApplicableRides > 40) {
|
||||
qsort(window_new_campaign_rides, countof(window_new_campaign_rides), sizeof(uint8), ride_reliability_compare);
|
||||
qsort(window_new_campaign_rides, countof(window_new_campaign_rides), sizeof(uint8), ride_value_compare);
|
||||
numApplicableRides = 40;
|
||||
}
|
||||
|
||||
|
@ -413,4 +413,4 @@ static void window_new_campaign_paint()
|
|||
// Total price
|
||||
money32 totalPrice = AdvertisingCampaignPricePerWeek[w->campaign.campaign_type] * w->campaign.no_weeks;
|
||||
gfx_draw_string_left(dpi, STR_MARKETING_TOTAL_COST, &totalPrice, 0, x, y);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3434,7 +3434,7 @@ static void window_ride_maintenance_paint()
|
|||
x = w->x + widget->left + 4;
|
||||
y = w->y + widget->top + 4;
|
||||
|
||||
reliability = ride->var_196 >> 8;
|
||||
reliability = ride->reliability >> 8;
|
||||
gfx_draw_string_left(dpi, STR_RELIABILITY_LABEL_1757, &reliability, 0, x, y);
|
||||
window_ride_maintenance_draw_bar(w, dpi, x + 103, y, max(10, reliability), 14);
|
||||
y += 11;
|
||||
|
|
|
@ -507,7 +507,7 @@ static void window_ride_list_scrollpaint()
|
|||
case INFORMATION_TYPE_RELIABILITY:
|
||||
// edx = RCT2_GLOBAL(0x009ACFA4 + (ride->var_001 * 4), uint32);
|
||||
|
||||
RCT2_GLOBAL(0x013CE952 + 2, uint16) = ride->var_196 >> 8;
|
||||
RCT2_GLOBAL(0x013CE952 + 2, uint16) = ride->reliability >> 8;
|
||||
formatSecondary = STR_RELIABILITY_LABEL;
|
||||
break;
|
||||
case INFORMATION_TYPE_DOWN_TIME:
|
||||
|
@ -661,7 +661,7 @@ static void window_ride_list_refresh_list(rct_window *w)
|
|||
case INFORMATION_TYPE_RELIABILITY:
|
||||
while (--current_list_position >= 0) {
|
||||
otherRide = &g_ride_list[w->list_item_positions[current_list_position]];
|
||||
if (ride->var_196 >> 8 <= otherRide->var_196 >> 8)
|
||||
if (ride->reliability >> 8 <= otherRide->reliability >> 8)
|
||||
break;
|
||||
|
||||
window_bubble_list_item(w, current_list_position);
|
||||
|
|
|
@ -276,11 +276,11 @@ money32 calculate_ride_value(rct_ride *ride)
|
|||
{
|
||||
if (ride->type == RIDE_TYPE_NULL)
|
||||
return 0;
|
||||
if (ride->reliability == 0xFFFF)
|
||||
if (ride->value == RIDE_VALUE_UNDEFINED)
|
||||
return 0;
|
||||
|
||||
// Reliability * (...)
|
||||
return (ride->reliability * 10) * (
|
||||
// Fair value * (...)
|
||||
return (ride->value * 10) * (
|
||||
ride->var_124 + ride->var_126 + ride->var_128 + ride->var_12A +
|
||||
ride->var_12C + ride->var_12E + ride->age + ride->running_cost +
|
||||
ride->var_134 + ride->var_136 +
|
||||
|
@ -369,8 +369,8 @@ static int park_calculate_guest_generation_probability()
|
|||
suggestedMaxGuests += RCT2_GLOBAL(0x0097D21E + (ride->type * 8), uint8);
|
||||
|
||||
// Add ride value
|
||||
if (ride->reliability != RIDE_RELIABILITY_UNDEFINED) {
|
||||
int rideValue = ride->reliability - ride->price;
|
||||
if (ride->value != RIDE_VALUE_UNDEFINED) {
|
||||
int rideValue = ride->value - ride->price;
|
||||
if (rideValue > 0)
|
||||
totalRideValue += rideValue * 2;
|
||||
}
|
||||
|
@ -802,4 +802,4 @@ void game_command_set_park_name(int *eax, int *ebx, int *ecx, int *edx, int *esi
|
|||
}
|
||||
|
||||
*ebx = 0;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue