mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-26 16:24:35 +01:00
Add remaining parts of sub_state_0
This commit is contained in:
@@ -1145,8 +1145,83 @@ void peep_update_ride_sub_state_1(rct_peep* peep){
|
||||
|
||||
if (RCT2_ADDRESS(RCT2_ADDRESS_RIDE_FLAGS, uint32)[ride->type * 2] &RIDE_TYPE_FLAG_13)
|
||||
{
|
||||
sint16 x, y, z;
|
||||
x = ride->entrances[peep->current_ride_station] & 0xFF;
|
||||
y = ride->entrances[peep->current_ride_station] >> 8;
|
||||
z = ride->station_heights[peep->current_ride_station];
|
||||
|
||||
rct_map_element* map_element = map_get_first_element_at(x, y);
|
||||
for (;; map_element++){
|
||||
if (map_element_get_type(map_element) != MAP_ELEMENT_TYPE_ENTRANCE)
|
||||
continue;
|
||||
if (map_element->base_height == z)
|
||||
break;
|
||||
}
|
||||
|
||||
uint8 direction_entrance = (map_element->type & MAP_ELEMENT_DIRECTION_MASK);
|
||||
|
||||
if (ride->type == RIDE_TYPE_MAZE){
|
||||
peep->var_78 = direction_entrance + 1;
|
||||
x *= 32;
|
||||
y *= 32;
|
||||
|
||||
x += RCT2_ADDRESS(0x993CCC, sint16)[direction_entrance * 2];
|
||||
y += RCT2_ADDRESS(0x993CCE, sint16)[direction_entrance * 2];
|
||||
|
||||
uint8 direction = direction_entrance * 4 + 11;
|
||||
if (scenario_rand() & 0x40){
|
||||
direction += 4;
|
||||
peep->var_78 += 2;
|
||||
}
|
||||
|
||||
direction &= 0xF;
|
||||
peep->var_37 = direction;
|
||||
peep->var_78 &= 3;
|
||||
|
||||
x += RCT2_GLOBAL(0x981FD1 + direction, sint16);
|
||||
y += RCT2_GLOBAL(0x981FD3 + direction, sint16);
|
||||
|
||||
peep->destination_x = x;
|
||||
peep->destination_y = y;
|
||||
peep->destination_tolerence = 3;
|
||||
|
||||
ride->var_120++;
|
||||
RCT2_CALLPROC_X(0x00695444, 0, 0, 0, peep->current_ride, (int)peep, 0, 0);
|
||||
peep->sub_state = 17;
|
||||
return;
|
||||
}
|
||||
|
||||
x = ride->station_starts[peep->current_ride_station] & 0xFF;
|
||||
y = ride->station_starts[peep->current_ride_station] >> 8;
|
||||
|
||||
map_element = map_get_first_element_at(x, y);
|
||||
for (;; map_element++){
|
||||
if (map_element_get_type(map_element) != MAP_ELEMENT_TYPE_TRACK)
|
||||
continue;
|
||||
if (map_element->base_height == z)
|
||||
break;
|
||||
}
|
||||
|
||||
uint8 direction_track = map_element->type & MAP_ELEMENT_DIRECTION_MASK;
|
||||
|
||||
peep->var_37 = (direction_entrance << 2) | (direction_track << 4);
|
||||
|
||||
x *= 32;
|
||||
y *= 32;
|
||||
|
||||
sint8* edx = peep->var_37 * 2 + RCT2_ADDRESS(0x97E1BC, sint8*)[ride->type];
|
||||
|
||||
x += edx[0];
|
||||
y += edx[1];
|
||||
|
||||
peep->destination_x = x;
|
||||
peep->destination_y = y;
|
||||
peep->current_car = 0;
|
||||
|
||||
ride->var_120++;
|
||||
RCT2_CALLPROC_X(0x00695444, 0, 0, 0, peep->current_ride, (int)peep, 0, 0);
|
||||
peep->sub_state = 14;
|
||||
return;
|
||||
// 0x006924E1
|
||||
}
|
||||
|
||||
rct_vehicle* vehicle = GET_VEHICLE(ride->vehicles[peep->current_train]);
|
||||
|
||||
@@ -367,7 +367,7 @@ enum {
|
||||
RIDE_TYPE_MINI_SUSPENDED_COASTER,
|
||||
RIDE_TYPE_BUMPER_BOATS,
|
||||
RIDE_TYPE_WOODEN_WILD_MOUSE,
|
||||
RIDE_TYPE_STEEPLECHASE,
|
||||
RIDE_TYPE_STEEPLECHASE = 10,
|
||||
RIDE_TYPE_CAR_RIDE,
|
||||
RIDE_TYPE_LAUNCHED_FREEFALL,
|
||||
RIDE_TYPE_BOBSLEIGH_COASTER,
|
||||
@@ -377,7 +377,7 @@ enum {
|
||||
RIDE_TYPE_MINE_TRAIN_COASTER,
|
||||
RIDE_TYPE_CHAIRLIFT,
|
||||
RIDE_TYPE_CORKSCREW_ROLLER_COASTER,
|
||||
RIDE_TYPE_MAZE,
|
||||
RIDE_TYPE_MAZE = 20,
|
||||
RIDE_TYPE_SPIRAL_SLIDE,
|
||||
RIDE_TYPE_GO_KARTS,
|
||||
RIDE_TYPE_LOG_FLUME,
|
||||
@@ -387,7 +387,7 @@ enum {
|
||||
RIDE_TYPE_SWINGING_INVERTER_SHIP,
|
||||
RIDE_TYPE_FOOD_STALL,
|
||||
RIDE_TYPE_1D,
|
||||
RIDE_TYPE_DRINK_STALL,
|
||||
RIDE_TYPE_DRINK_STALL = 30,
|
||||
RIDE_TYPE_1F,
|
||||
RIDE_TYPE_SHOP,
|
||||
RIDE_TYPE_MERRY_GO_ROUND,
|
||||
@@ -397,7 +397,7 @@ enum {
|
||||
RIDE_TYPE_FERRIS_WHEEL,
|
||||
RIDE_TYPE_MOTION_SIMULATOR,
|
||||
RIDE_TYPE_3D_CINEMA,
|
||||
RIDE_TYPE_TOP_SPIN,
|
||||
RIDE_TYPE_TOP_SPIN = 40,
|
||||
RIDE_TYPE_SPACE_RINGS,
|
||||
RIDE_TYPE_REVERSE_FREEFALL_COASTER,
|
||||
RIDE_TYPE_ELEVATOR,
|
||||
@@ -407,7 +407,7 @@ enum {
|
||||
RIDE_TYPE_HAUNTED_HOUSE,
|
||||
RIDE_TYPE_FIRST_AID,
|
||||
RIDE_TYPE_CIRCUS_SHOW,
|
||||
RIDE_TYPE_GHOST_TRAIN,
|
||||
RIDE_TYPE_GHOST_TRAIN = 50,
|
||||
RIDE_TYPE_TWISTER_ROLLER_COASTER,
|
||||
RIDE_TYPE_WOODEN_ROLLER_COASTER,
|
||||
RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER,
|
||||
@@ -417,7 +417,7 @@ enum {
|
||||
RIDE_TYPE_FLYING_ROLLER_COASTER,
|
||||
RIDE_TYPE_3A,
|
||||
RIDE_TYPE_VIRGINIA_REEL,
|
||||
RIDE_TYPE_SPLASH_BOATS,
|
||||
RIDE_TYPE_SPLASH_BOATS = 60,
|
||||
RIDE_TYPE_MINI_HELICOPTERS,
|
||||
RIDE_TYPE_LAY_DOWN_ROLLER_COASTER,
|
||||
RIDE_TYPE_SUSPENDED_MONORAIL,
|
||||
@@ -427,7 +427,7 @@ enum {
|
||||
RIDE_TYPE_MINI_GOLF,
|
||||
RIDE_TYPE_GIGA_COASTER,
|
||||
RIDE_TYPE_ROTO_DROP,
|
||||
RIDE_TYPE_FLYING_SAUCERS,
|
||||
RIDE_TYPE_FLYING_SAUCERS = 70,
|
||||
RIDE_TYPE_CROOKED_HOUSE,
|
||||
RIDE_TYPE_MONORAIL_CYCLES,
|
||||
RIDE_TYPE_COMPACT_INVERTED_COASTER,
|
||||
@@ -437,7 +437,7 @@ enum {
|
||||
RIDE_TYPE_MAGIC_CARPET,
|
||||
RIDE_TYPE_SUBMARINE_RIDE,
|
||||
RIDE_TYPE_RIVER_RAFTS,
|
||||
RIDE_TYPE_50,
|
||||
RIDE_TYPE_50 = 80,
|
||||
RIDE_TYPE_ENTERPRISE,
|
||||
RIDE_TYPE_52,
|
||||
RIDE_TYPE_53,
|
||||
@@ -447,7 +447,7 @@ enum {
|
||||
RIDE_TYPE_MINI_ROLLER_COASTER,
|
||||
RIDE_TYPE_MINE_RIDE,
|
||||
RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER,
|
||||
RIDE_TYPE_90
|
||||
RIDE_TYPE_90 = 90
|
||||
};
|
||||
|
||||
enum {
|
||||
|
||||
Reference in New Issue
Block a user