From 5690b95ff052027e1f1a90482f5ec14cd262f660 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Thu, 11 Aug 2016 22:55:45 +0200 Subject: [PATCH 1/7] Integrate peep clothing colours --- src/peep/peep.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 4 deletions(-) diff --git a/src/peep/peep.c b/src/peep/peep.c index 362308763a..2aa0f91bf2 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -6459,6 +6459,72 @@ void peep_update_days_in_queue() } } +/** rct2: 0x009823BC */ +static const uint8 trouser_colours[] = { + COLOUR_BLACK, + COLOUR_GREY, + COLOUR_LIGHT_BROWN, + COLOUR_SATURATED_BROWN, + COLOUR_DARK_BROWN, + COLOUR_SALMON_PINK, + COLOUR_BLACK, + COLOUR_GREY, + COLOUR_LIGHT_BROWN, + COLOUR_SATURATED_BROWN, + COLOUR_DARK_BROWN, + COLOUR_SALMON_PINK, + COLOUR_BLACK, + COLOUR_GREY, + COLOUR_LIGHT_BROWN, + COLOUR_SATURATED_BROWN, + COLOUR_DARK_BROWN, + COLOUR_SALMON_PINK, + COLOUR_DARK_PURPLE, + COLOUR_LIGHT_PURPLE, + COLOUR_DARK_BLUE, + COLOUR_SATURATED_GREEN, + COLOUR_SATURATED_RED, + COLOUR_DARK_ORANGE, + COLOUR_BORDEAUX_RED, +}; + +/** rct2: 0x009823D5 */ +static const uint8 tshirt_colours[] = { + COLOUR_BLACK, + COLOUR_GREY, + COLOUR_LIGHT_BROWN, + COLOUR_SATURATED_BROWN, + COLOUR_DARK_BROWN, + COLOUR_SALMON_PINK, + COLOUR_BLACK, + COLOUR_GREY, + COLOUR_LIGHT_BROWN, + COLOUR_SATURATED_BROWN, + COLOUR_DARK_BROWN, + COLOUR_SALMON_PINK, + COLOUR_DARK_PURPLE, + COLOUR_LIGHT_PURPLE, + COLOUR_DARK_BLUE, + COLOUR_SATURATED_GREEN, + COLOUR_SATURATED_RED, + COLOUR_DARK_ORANGE, + COLOUR_BORDEAUX_RED, + COLOUR_WHITE, + COLOUR_BRIGHT_PURPLE, + COLOUR_LIGHT_BLUE, + COLOUR_TEAL, + COLOUR_DARK_GREEN, + COLOUR_MOSS_GREEN, + COLOUR_BRIGHT_GREEN, + COLOUR_OLIVE_GREEN, + COLOUR_DARK_OLIVE_GREEN, + COLOUR_YELLOW, + COLOUR_LIGHT_ORANGE, + COLOUR_BRIGHT_RED, + COLOUR_DARK_PINK, + COLOUR_BRIGHT_PINK, +}; + /** * * rct2: 0x0069A05D @@ -6594,11 +6660,11 @@ rct_peep *peep_generate(int x, int y, int z) peep->var_F3 = 0; peep->var_F4 = 0; - uint8 tshirt_colour = scenario_rand() % 33; - peep->tshirt_colour = RCT2_ADDRESS(0x009823D5, uint8)[tshirt_colour]; + uint8 tshirt_colour = scenario_rand() % countof(tshirt_colours); + peep->tshirt_colour = tshirt_colours[tshirt_colour]; - uint8 trousers_colour = scenario_rand() % 25; - peep->trousers_colour = RCT2_ADDRESS(0x009823BC, uint8)[trousers_colour]; + uint8 trousers_colour = scenario_rand() % countof(trouser_colours); + peep->trousers_colour = trouser_colours[trousers_colour]; uint8 energy = (scenario_rand() & 0x3F) + 65; peep->energy = energy; From 7c737e853876d0ccce68ac5190657ac17ee63857 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Thu, 11 Aug 2016 23:20:55 +0200 Subject: [PATCH 2/7] Integrate crowded thoughts --- src/peep/peep.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/peep/peep.c b/src/peep/peep.c index 2aa0f91bf2..021111c3dc 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -739,6 +739,26 @@ static void sub_68F8CD(rct_peep *peep) peep_leave_park(peep); } +/** rct2: 009823AC */ +static const uint8 crowded_thoughts[] = { + PEEP_THOUGHT_TYPE_LOST, + PEEP_THOUGHT_TYPE_TIRED, + PEEP_THOUGHT_TYPE_BAD_LITTER, + PEEP_THOUGHT_TYPE_HUNGRY, + PEEP_THOUGHT_TYPE_THIRSTY, + PEEP_THOUGHT_TYPE_VERY_CLEAN, + PEEP_THOUGHT_TYPE_CROWDED, + PEEP_THOUGHT_TYPE_SCENERY, + PEEP_THOUGHT_TYPE_VERY_CLEAN, + PEEP_THOUGHT_TYPE_MUSIC, + PEEP_THOUGHT_TYPE_WATCHED, + PEEP_THOUGHT_TYPE_NOT_HUNGRY, + PEEP_THOUGHT_TYPE_NOT_THIRSTY, + PEEP_THOUGHT_TYPE_BATHROOM, + PEEP_THOUGHT_TYPE_NONE, + PEEP_THOUGHT_TYPE_NONE, +}; + /** * * rct2: 0x0068F41A @@ -776,7 +796,7 @@ static void sub_68F41A(rct_peep *peep, int index) //RCT2_GLOBAL(0x00F1EDFE, uint32) = index; not needed all cases accounted for if (peep->peep_flags & PEEP_FLAGS_CROWDED){ - uint8 thought_type = RCT2_ADDRESS(0x009823AC, uint8)[scenario_rand() & 0xF]; + uint8 thought_type = crowded_thoughts[scenario_rand() & 0xF]; if (thought_type != PEEP_THOUGHT_TYPE_NONE){ peep_insert_new_thought(peep, thought_type, 0xFF); } From af629d7867b14e2e93dbdb5367f44881dd0eb915 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Thu, 11 Aug 2016 23:21:09 +0200 Subject: [PATCH 3/7] Integrate discard containers --- src/peep/peep.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/src/peep/peep.c b/src/peep/peep.c index 021111c3dc..50db55cb78 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -759,6 +759,64 @@ static const uint8 crowded_thoughts[] = { PEEP_THOUGHT_TYPE_NONE, }; +/** rct2: 0x00982326 */ +static const uint8 peep_item_containers[] = { + 0xFF, // PEEP_ITEM_BALLOON + 0xFF, // PEEP_ITEM_TOY + 0xFF, // PEEP_ITEM_MAP + 0xFF, // PEEP_ITEM_PHOTO + 0xFF, // PEEP_ITEM_UMBRELLA + SHOP_ITEM_EMPTY_CAN, // PEEP_ITEM_DRINK + SHOP_ITEM_EMPTY_BURGER_BOX, // PEEP_ITEM_BURGER + SHOP_ITEM_RUBBISH, // PEEP_ITEM_FRIES + 0xFF, // PEEP_ITEM_ICE_CREAM + 0xFF, // PEEP_ITEM_COTTON_CANDY + 0xFF, // PEEP_ITEM_EMPTY_CAN + 0xFF, // PEEP_ITEM_RUBBISH + 0xFF, // PEEP_ITEM_EMPTY_BURGER_BOX + SHOP_ITEM_RUBBISH, // PEEP_ITEM_PIZZA + 0xFF, // PEEP_ITEM_VOUCHER + SHOP_ITEM_RUBBISH, // PEEP_ITEM_POPCORN + 0xFF, // PEEP_ITEM_HOT_DOG + 0xFF, // PEEP_ITEM_TENTACLE + 0xFF, // PEEP_ITEM_HAT + 0xFF, // PEEP_ITEM_CANDY_APPLE + 0xFF, // PEEP_ITEM_TSHIRT + 0xFF, // PEEP_ITEM_DONUT + SHOP_ITEM_EMPTY_CUP, // PEEP_ITEM_COFFEE + 0xFF, // PEEP_ITEM_EMPTY_CUP + SHOP_ITEM_EMPTY_BOX, // PEEP_ITEM_CHICKEN + SHOP_ITEM_EMPTY_BOTTLE, // PEEP_ITEM_LEMONADE + 0xFF, // PEEP_ITEM_EMPTY_BOX + 0xFF, // PEEP_ITEM_EMPTY_BOTTLE +}; + +/** rct2: 0x00982342 */ +static const uint8 peep_extra_item_containers[] = { + 0xFF, // PEEP_ITEM_PHOTO2 + 0xFF, // PEEP_ITEM_PHOTO3 + 0xFF, // PEEP_ITEM_PHOTO4 + 0xFF, // PEEP_ITEM_PRETZEL + SHOP_ITEM_EMPTY_CUP, // PEEP_ITEM_CHOCOLATE + SHOP_ITEM_EMPTY_CUP, // PEEP_ITEM_ICED_TEA + 0xFF, // PEEP_ITEM_FUNNEL_CAKE + 0xFF, // PEEP_ITEM_SUNGLASSES + SHOP_ITEM_EMPTY_BOWL_BLUE, // PEEP_ITEM_BEEF_NOODLES + SHOP_ITEM_EMPTY_BOWL_BLUE, // PEEP_ITEM_FRIED_RICE_NOODLES + SHOP_ITEM_EMPTY_BOWL_RED, // PEEP_ITEM_WONTON_SOUP + SHOP_ITEM_EMPTY_BOWL_RED, // PEEP_ITEM_MEATBALL_SOUP + SHOP_ITEM_EMPTY_JUICE_CUP, // PEEP_ITEM_FRUIT_JUICE + SHOP_ITEM_EMPTY_DRINK_CARTON, // PEEP_ITEM_SOYBEAN_MILK + SHOP_ITEM_EMPTY_DRINK_CARTON, // PEEP_ITEM_SU_JONGKWA + 0xFF, // PEEP_ITEM_SUB_SANDWICH + 0xFF, // PEEP_ITEM_COOKIE + 0xFF, // PEEP_ITEM_EMPTY_BOWL_RED + 0xFF, // PEEP_ITEM_EMPTY_DRINK_CARTON + 0xFF, // PEEP_ITEM_EMPTY_JUICE_CUP + 0xFF, // PEEP_ITEM_ROAST_SAUSAGE + 0xFF, // PEEP_ITEM_EMPTY_BOWL_BLUE +}; + /** * * rct2: 0x0068F41A @@ -1103,7 +1161,7 @@ static void sub_68F41A(rct_peep *peep, int index) if (chosen_food != -1){ peep->item_standard_flags &= ~(1 << chosen_food); - uint8 discard_container = RCT2_ADDRESS(0x00982326, uint8)[chosen_food]; + uint8 discard_container = peep_item_containers[chosen_food]; if (discard_container != 0xFF){ peep->item_standard_flags |= (1 << discard_container); } @@ -1115,7 +1173,7 @@ static void sub_68F41A(rct_peep *peep, int index) chosen_food = bitscanforward(peep_has_food_extra_flag(peep)); if (chosen_food != -1){ peep->item_extra_flags &= ~(1 << chosen_food); - uint8 discard_container = RCT2_ADDRESS(0x00982342, uint8)[chosen_food]; + uint8 discard_container = peep_extra_item_containers[chosen_food]; if (discard_container != 0xFF){ if (discard_container >= 32) peep->item_extra_flags |= (1 << (discard_container - 32)); From da4307a6c6e0956dfcb049df391abb1c2abf542e Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Thu, 11 Aug 2016 23:21:24 +0200 Subject: [PATCH 4/7] Integrate nausea tolerances --- src/peep/peep.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/peep/peep.c b/src/peep/peep.c index 50db55cb78..68c697623f 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -6537,6 +6537,14 @@ void peep_update_days_in_queue() } } +/** rct2: 0x009823A0 */ +static const enum PEEP_NAUSEA_TOLERANCE nausea_tolerance_distribution[] = { + PEEP_NAUSEA_TOLERANCE_NONE, + PEEP_NAUSEA_TOLERANCE_LOW, PEEP_NAUSEA_TOLERANCE_LOW, + PEEP_NAUSEA_TOLERANCE_AVERAGE, PEEP_NAUSEA_TOLERANCE_AVERAGE, PEEP_NAUSEA_TOLERANCE_AVERAGE, + PEEP_NAUSEA_TOLERANCE_HIGH, PEEP_NAUSEA_TOLERANCE_HIGH, PEEP_NAUSEA_TOLERANCE_HIGH, PEEP_NAUSEA_TOLERANCE_HIGH, PEEP_NAUSEA_TOLERANCE_HIGH, PEEP_NAUSEA_TOLERANCE_HIGH, +}; + /** rct2: 0x009823BC */ static const uint8 trouser_colours[] = { COLOUR_BLACK, @@ -6669,7 +6677,7 @@ rct_peep *peep_generate(int x, int y, int z) nausea_tolerance += 4; } - peep->nausea_tolerance = RCT2_ADDRESS(0x009823A0, uint8)[nausea_tolerance]; + peep->nausea_tolerance = nausea_tolerance_distribution[nausea_tolerance]; sint8 happiness = (scenario_rand() & 0x1F) - 15 + gGuestInitialHappiness; From afde0df6f6afb5e766c80b4f601c08e6add55cba Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Thu, 11 Aug 2016 23:41:27 +0200 Subject: [PATCH 5/7] Integrate data at 0x009822F4, 0x00982310 --- src/peep/peep.c | 65 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 59 insertions(+), 6 deletions(-) diff --git a/src/peep/peep.c b/src/peep/peep.c index 68c697623f..855fc74888 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -739,6 +739,64 @@ static void sub_68F8CD(rct_peep *peep) peep_leave_park(peep); } +/** rct2: 0x009822F4, 0x00982310 */ +static const uint8 byte_9822F4[] = { + 0, // SHOP_ITEM_BALLOON + 0, // SHOP_ITEM_TOY + 0, // SHOP_ITEM_MAP + 0, // SHOP_ITEM_PHOTO + 0, // SHOP_ITEM_UMBRELLA + 100, // SHOP_ITEM_DRINK + 150, // SHOP_ITEM_BURGER + 120, // SHOP_ITEM_FRIES + 60, // SHOP_ITEM_ICE_CREAM + 50, // SHOP_ITEM_COTTON_CANDY + 0, // SHOP_ITEM_EMPTY_CAN + 0, // SHOP_ITEM_RUBBISH + 0, // SHOP_ITEM_EMPTY_BURGER_BOX + 150, // SHOP_ITEM_PIZZA + 0, // SHOP_ITEM_VOUCHER + 75, // SHOP_ITEM_POPCORN + 133, // SHOP_ITEM_HOT_DOG + 110, // SHOP_ITEM_TENTACLE + 0, // SHOP_ITEM_HAT + 50, // SHOP_ITEM_CANDY_APPLE + 0, // SHOP_ITEM_TSHIRT + 80, // SHOP_ITEM_DONUT + 90, // SHOP_ITEM_COFFEE + 0, // SHOP_ITEM_EMPTY_CUP + 170, // SHOP_ITEM_CHICKEN + 115, // SHOP_ITEM_LEMONADE + 0, // SHOP_ITEM_EMPTY_BOX + 0, // SHOP_ITEM_EMPTY_BOTTLE + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0, // SHOP_ITEM_PHOTO2 + 0, // SHOP_ITEM_PHOTO3 + 0, // SHOP_ITEM_PHOTO4 + 70, // SHOP_ITEM_PRETZEL + 85, // SHOP_ITEM_CHOCOLATE + 95, // SHOP_ITEM_ICED_TEA + 90, // SHOP_ITEM_FUNNEL_CAKE + 0, // SHOP_ITEM_SUNGLASSES + 130, // SHOP_ITEM_BEEF_NOODLES + 120, // SHOP_ITEM_FRIED_RICE_NOODLES + 100, // SHOP_ITEM_WONTON_SOUP + 110, // SHOP_ITEM_MEATBALL_SOUP + 110, // SHOP_ITEM_FRUIT_JUICE + 90, // SHOP_ITEM_SOYBEAN_MILK + 100, // SHOP_ITEM_SU_JONGKWA + 130, // SHOP_ITEM_SUB_SANDWICH + 75, // SHOP_ITEM_COOKIE + 0, // SHOP_ITEM_EMPTY_BOWL_RED + 0, // SHOP_ITEM_EMPTY_DRINK_CARTON + 0, // SHOP_ITEM_EMPTY_JUICE_CUP + 115, // SHOP_ITEM_ROAST_SAUSAGE + 0 // SHOP_ITEM_EMPTY_BOWL_BLUE +}; + /** rct2: 009823AC */ static const uint8 crowded_thoughts[] = { PEEP_THOUGHT_TYPE_LOST, @@ -9567,12 +9625,7 @@ loc_69B221: if (shopItem == SHOP_ITEM_MAP) peep_reset_pathfind_goal(peep); - uint16 dl; - if (shopItem >= 32) - dl = RCT2_ADDRESS(0x982310, uint8)[shopItem - 32]; - else - dl = RCT2_ADDRESS(0x9822F4, uint8)[shopItem]; - + uint16 dl = byte_9822F4[shopItem]; peep->var_42 = min((peep->var_42 + dl), 255); if (shopItem == SHOP_ITEM_PHOTO) From c60fd16617f7ea469e776adc9195b8e1b043c477 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 12 Aug 2016 14:48:21 +0200 Subject: [PATCH 6/7] Integrate data at 0x00982004 --- src/peep/peep.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/peep/peep.c b/src/peep/peep.c index 855fc74888..9f4226b397 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -6982,13 +6982,41 @@ void get_arguments_from_thought(rct_peep_thought thought, uint32* argument_1, ui *argument_2 = *((uint32*)(esi + 2)); //Always 0 apart from on rides? } +/** rct2: 0x00982004 */ +static const bool peep_allow_pick_up[] = { + true, // PEEP_STATE_FALLING + false, // PEEP_STATE_1 + false, // PEEP_STATE_QUEUING_FRONT + false, // PEEP_STATE_ON_RIDE + false, // PEEP_STATE_LEAVING_RIDE + true, // PEEP_STATE_WALKING + true, // PEEP_STATE_QUEUING + false, // PEEP_STATE_ENTERING_RIDE + true, // PEEP_STATE_SITTING + true, // PEEP_STATE_PICKED + true, // PEEP_STATE_PATROLLING + true, // PEEP_STATE_MOWING + true, // PEEP_STATE_SWEEPING + false, // PEEP_STATE_ENTERING_PARK + false, // PEEP_STATE_LEAVING_PARK + true, // PEEP_STATE_ANSWERING + false, // PEEP_STATE_FIXING + false, // PEEP_STATE_BUYING + true, // PEEP_STATE_WATCHING + true, // PEEP_STATE_EMPTYING_BIN + true, // PEEP_STATE_USING_BIN + true, // PEEP_STATE_WATERING + true, // PEEP_STATE_HEADING_TO_INSPECTION + false, // PEEP_STATE_INSPECTING +}; + /** * * rct2: 0x00698827 * returns 1 on pickup (CF not set) */ int peep_can_be_picked_up(rct_peep* peep){ - return RCT2_ADDRESS(0x982004, uint8)[peep->state] & 1; + return peep_allow_pick_up[peep->state]; } enum{ From 32f6f36d1d8de7f9d482452ddd9be9caf6bd8abe Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 12 Aug 2016 14:50:47 +0200 Subject: [PATCH 7/7] Integrate data at 0x00982134 --- src/peep/staff.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/peep/staff.c b/src/peep/staff.c index 3deb79db67..c0e868be9f 100644 --- a/src/peep/staff.c +++ b/src/peep/staff.c @@ -323,6 +323,26 @@ void game_command_hire_new_staff_member(int* eax, int* ebx, int* ecx, int* edx, edi); } +/** rct2: 0x00982134 */ +static const bool peep_slow_walking_types[] = { + false, // PEEP_SPRITE_TYPE_NORMAL + false, // PEEP_SPRITE_TYPE_HANDYMAN + false, // PEEP_SPRITE_TYPE_MECHANIC + false, // PEEP_SPRITE_TYPE_SECURITY + false, // PEEP_SPRITE_TYPE_ENTERTAINER_PANDA + false, // PEEP_SPRITE_TYPE_ENTERTAINER_TIGER + false, // PEEP_SPRITE_TYPE_ENTERTAINER_ELEPHANT + false, // PEEP_SPRITE_TYPE_ENTERTAINER_ROMAN + false, // PEEP_SPRITE_TYPE_ENTERTAINER_GORILLA + false, // PEEP_SPRITE_TYPE_ENTERTAINER_SNOWMAN + false, // PEEP_SPRITE_TYPE_ENTERTAINER_KNIGHT + true, // PEEP_SPRITE_TYPE_ENTERTAINER_ASTRONAUT + false, // PEEP_SPRITE_TYPE_ENTERTAINER_BANDIT + false, // PEEP_SPRITE_TYPE_ENTERTAINER_SHERIFF + true, // PEEP_SPRITE_TYPE_ENTERTAINER_PIRATE + true, // PEEP_SPRITE_TYPE_19 +}; + /** * * rct2: 0x006C0BB5 @@ -345,7 +365,7 @@ void game_command_set_staff_order(int *eax, int *ebx, int *ecx, int *edx, int *e sprite_type += 4; peep->sprite_type = sprite_type; peep->peep_flags &= ~PEEP_FLAGS_SLOW_WALK; - if(RCT2_ADDRESS(0x00982134, uint8)[sprite_type] & 1){ + if(peep_slow_walking_types[sprite_type]){ peep->peep_flags |= PEEP_FLAGS_SLOW_WALK; } peep->action_frame = 0;