Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

1 Neutral

About jimmychau

  • Rank
  1. So I have tried some more, with the simple king rapids, the one on the left with roofs directly above the track is considered sheltered, but the one on the right is considered not sheltered with or without the vertical walls makes no difference. There may be a limit to how close the tiles must be to the vehicle during testing, but I fail to see the logic in the code. I have also tested with the dejavu, but for this track I failed to have it considered sheltered even if all the tracks and queue path are covered with glass roof, still no one wants to go in. Strangely I remember in another saved game it worked, but now I cannot replicate it. rct_tile_element * tile_element = map_get_surface_element_at({x, y}); if (tile_element->base_height * 8 <= vehicle->z)
  2. @DeurklinkGreat work, thank you for your in depth analysis, I referenced your formula and built another xlsx sheet that calculates multiple rides in a game and its optimal charge in different time period. I hereby share it. I am not entirely sure about beginning of the end of the month, so month might be off by 1. Also sometimes prices seems to be off by 0.1 as well, but the excel worked well enough for me so I am currently not bothered to make changes to it. openRCT2 calculator2.xlsx
  3. Thank you for all the input guys. After digging some code, I found that it calculates the "sheltered length" of a ride at Vehicle.cpp ride->sheltered_length = add_clamp_sint32(ride->sheltered_length, distance); I think Broxzier is quite correct, so my next question is, what is "Large Scenery"? and what is full tile small scenery? must it be roof or something? Does it has to be "properly enclosed" not just floating blocks? because I think I did try that. static void vehicle_update_measurements(rct_vehicle * vehicle){ rct_tile_element * tile_element = map_get_surface_element_at({x, y}); if (tile_element->base_height * 8 <= vehicle->z) { bool cover_found = false; do { if (tile_element_get_type(tile_element) == TILE_ELEMENT_TYPE_LARGE_SCENERY) { cover_found = true; break; } if (tile_element_get_type(tile_element) == TILE_ELEMENT_TYPE_PATH) { cover_found = true; break; } if (tile_element_get_type(tile_element) != TILE_ELEMENT_TYPE_SMALL_SCENERY) continue; rct_scenery_entry * scenery = get_small_scenery_entry(tile_element->properties.scenery.type); if (scenery_small_entry_has_flag(scenery, SMALL_SCENERY_FLAG_FULL_TILE)) { cover_found = true; break; } } while (!tile_element_is_last_for_tile(tile_element++)); if (cover_found == false) { ride->testing_flags &= ~RIDE_TESTING_SHELTERED; return; } } if (!(ride->testing_flags & RIDE_TESTING_SHELTERED)) { ride->testing_flags |= RIDE_TESTING_SHELTERED; uint8 num_sheltered_sections = ride->num_sheltered_sections & 0x1F; if (num_sheltered_sections != 0x1F) num_sheltered_sections++; ride->num_sheltered_sections &= ~0x1F; ride->num_sheltered_sections |= num_sheltered_sections; if (vehicle->vehicle_sprite_type != 0) { ride->num_sheltered_sections |= (1 << 5); } if (vehicle->bank_rotation != 0) { ride->num_sheltered_sections |= (1 << 6); } } sint32 distance = ((vehicle->velocity + vehicle->acceleration) >> 10) * 42; if (distance < 0) return; ride->sheltered_length = add_clamp_sint32(ride->sheltered_length, distance);
  4. Hi first of all great work dev guys. I am playing 0.1.2, would want to know if the "rollercoaster being considered indoor if enough portion is covered" feature has been implemented or not? According to this wikia post, it claimed that if 40% of your track is covered it shall be considered indoor and guest will ride during rain. However I have tried placing roofs and base blocks above the tracks but it did not seemed to work. Is there any caution I have to take while "covering" the track? must I use roof objects or something? must they be built 1 tile directly above track?
  • Create New...