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:
Steps to reproduce:
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.
Most helpful comment
I did not mean to submit this immediately as I was writing.