Openrct2: Enchancement: Better "harder park rating"

Created on 18 Feb 2020  路  7Comments  路  Source: OpenRCT2/OpenRCT2

Version: 0.2.4+
Commit/Build: 426e106+

I would like it that, instead of just flat out subtracting 100 points from your park rating when enabled, I would also like it to do a few things to make sure you have to keep the park clean and safe in order to maintain a high park rating:

  1. [ ] Remove or increase the hard cap on the amount of litter in the park. This would mean you would need to be extra careful with having lots of litter in your park, lest your park rating goes to zero til you clean it up.
  2. [ ] Remove or increase the hard cap on both components of the deadly casualties. This would mean you would need to be extra careful with killing lots of guests, lest your park rating goes to zero and stays there for a while.
  3. [ ] Perhaps make guests dying in the void count against your park rating? This would fix an exploit allowing players to kill guests with basically no penalty.
  4. [ ] Perhaps have a setting or cheat to allow the numeric value of the park rating to be less than 0 or greater than 999? This can be useful for debugging, but has no gameplay effects.
  • Not reproducible in RCT2 (vanilla).
  • Not specific to multiplayer.

Steps to reproduce:

  1. Enable harder park rating.
  2. Have lots of litter or deadly casualties.
  3. Notice that the park rating does not hit 0 in case of lots of litter assuming the park is otherwise excellent.
  4. Notice that the park rating does not hit 0 in case of lots of deadly casualties assuming the park is otherwise perfect.
  5. Notice that the park rating does not drop in case of guests dying in the void, caused by having a ride exit face a cliff with nothing underneath.
alteration discussion

Most helpful comment

I did not mean to submit this immediately as I was writing.

All 7 comments

Please write an actual description of how you want to "enhance" this feature.

I did not mean to submit this immediately as I was writing.

Honestly? Consider splitting "guests dying in void affects park rating" to another issue. I don't see the need to restrict that behavior to a harder park rating.

Honestly? Consider splitting "guests dying in void affects park rating" to another issue. I don't see the need to restrict that behavior to a harder park rating.

Maybe they should slowly float upward until they reach the land surface? Guests dropped from a great height slowly fall until they reach the surface, so it kind of makes sense for guests dropped below the surface to slowly fall upward until they hit the next surface (or path).

Then again, I don't know if that should be changed at all. It would be kind of a big deviation from the vanilla behavior if they didn't fall into the void and harmlessly vanish. But on the other hand, you _could_ consider the vanilla behavior of this to be an original bug, and changing the behavior is just fixing the bug.

I guess all I'm really saying is that I hope _if_ it is changed, it'll be changed by having peeps float upward until they reach a surface or path tile.

The uncapping of the litter penalty could be implemented like this:

if (gParkFlags & PARK_FLAGS_DIFFICULT_PARK_RATING)
{
    result -= 600 - (4 * (150 - litterCount));
}
else
{
    result -= 600 - (4 * (150 - std::min<int32_t>(150, litterCount)));
}

This would replace:
https://github.com/OpenRCT2/OpenRCT2/blob/3613c660a0b4d2bc7d81329424f525eac7e3c7e3/src/openrct2/world/Park.cpp#L485

The uncapping of the penalty for killing guests could be implemented like this:

if (gParkFlags & PARK_FLAGS_DIFFICULT_PARK_RATING)
{
    gParkRatingCasualtyPenalty += 25;
}
else
{
    gParkRatingCasualtyPenalty = std::min(gParkRatingCasualtyPenalty + 25, 1000);
}

This would replace:
https://github.com/OpenRCT2/OpenRCT2/blob/cfb405f0ede05de12e47009e74260b59083f54d0/src/openrct2/peep/Peep.cpp#L894

The uncapping of the penalty for crashing occupied trains could be implemented like this:

if ((gParkRatingCasualtyPenalty < 500) || (gParkFlags & PARK_FLAGS_DIFFICULT_PARK_RATING))
{
    gParkRatingCasualtyPenalty += 200
}

This would replace:
https://github.com/OpenRCT2/OpenRCT2/blob/b70c5cefd613cbfcbfa6cab6b92aad23eaadb9ab/src/openrct2/ride/Vehicle.cpp#L5209-L5212

Combining this with #11117 so that each of these things is a possible goal you can add to a scenario would mean you don't have to change the way original scenarios play but you can make new scenarios that act like this.

If #11773 is implemented, then part of it would solve this, since you would be able to listen to the park rating calculation function being called, and change the park rating according to the plugin's own formula instead of the base game's park rating calculation formula.

Was this page helpful?
0 / 5 - 0 ratings