diff --git a/src/peep/peep.c b/src/peep/peep.c index 68dc5b0901..03ff279fba 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -175,6 +175,21 @@ static void sub_693BE5(rct_peep* peep, uint8 al){ sub_693B58(peep); } +/** +* +* rct2: 0x0069A512 +*/ +void remove_peep_from_ride(rct_peep* peep) +{ + if (peep->state == PEEP_STATE_QUEUING) { + remove_peep_from_queue(peep); + } + peep_decrement_num_riders(peep); + peep->state = PEEP_STATE_1; + peep_window_state_update(peep); + sub_693BE5(peep, 0); +} + static void peep_state_reset(rct_peep* peep){ peep_decrement_num_riders(peep); peep->state = PEEP_STATE_1; @@ -556,7 +571,7 @@ void peep_sprite_remove(rct_peep* peep){ //RCT2_CALLPROC_X(0x69A535, 0, 0, 0, 0, (int)peep, 0, 0); //return; - RCT2_CALLPROC_X(0x0069A512, 0, 0, 0, 0, (int)peep, 0, 0); + remove_peep_from_ride(peep); invalidate_sprite((rct_sprite*)peep); window_close_by_number(WC_PEEP, peep->sprite_index); diff --git a/src/peep/peep.h b/src/peep/peep.h index 315dd46bd6..9dd9d26a89 100644 --- a/src/peep/peep.h +++ b/src/peep/peep.h @@ -584,6 +584,7 @@ void peep_insert_new_thought(rct_peep *peep, uint8 thought_type, uint8 thought_a void peep_set_map_tooltip(rct_peep *peep); void sub_693B58(rct_peep* peep); +void remove_peep_from_ride(rct_peep* peep); void remove_peep_from_queue(rct_peep* peep); #endif diff --git a/src/peep/staff.c b/src/peep/staff.c index 15f15c1fe7..25c9eaa181 100644 --- a/src/peep/staff.c +++ b/src/peep/staff.c @@ -294,7 +294,7 @@ void game_command_fire_staff_member(int *eax, int *ebx, int *ecx, int *edx, int window_close_by_class(WC_FIRE_PROMPT); uint16 sprite_id = *edx; rct_peep *peep = &g_sprite_list[sprite_id].peep; - RCT2_CALLPROC_X(0x0069A512, 0, 0, 0, 0, (int)peep, 0, 0); + remove_peep_from_ride(peep); peep_sprite_remove(peep); } *ebx = 0; diff --git a/src/windows/guest.c b/src/windows/guest.c index 37b971a367..4aff777c39 100644 --- a/src/windows/guest.c +++ b/src/windows/guest.c @@ -622,7 +622,7 @@ void window_guest_overview_mouse_up(){ w->var_48C = peep->x; - RCT2_CALLPROC_X(0x0069A512, 0, 0, 0, 0, (int)peep, 0, 0); + remove_peep_from_ride(peep); invalidate_sprite((rct_sprite*)peep); sprite_move(0x8000, peep->y, peep->z, (rct_sprite*)peep); diff --git a/src/windows/staff.c b/src/windows/staff.c index 5a14ff1deb..67222c706b 100644 --- a/src/windows/staff.c +++ b/src/windows/staff.c @@ -457,7 +457,7 @@ void window_staff_overview_mouseup() w->var_48C = peep->x; - RCT2_CALLPROC_X(0x0069A512, 0, 0, 0, 0, (int)peep, 0, 0); + remove_peep_from_ride(peep); invalidate_sprite((rct_sprite*)peep); sprite_move( 0x8000, peep->y, peep->z, (rct_sprite*)peep);