1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-10 09:32:29 +01:00

Feature: [Plugin] Add bindings for missing cheats

Added the following binds for completeness:
- ignoreRidePrice
- makeAllDestructible
- forcedParkRating*

`allowSpecialColourSchemes` was missing from the type definition file so I added that as well.

\*forcedParkRating required a little more logic than the boolean cheats and I added some safeguards to prevent setting invalid values
This commit is contained in:
Cory Sanin
2025-07-08 02:18:25 -05:00
committed by GitHub
parent 263796387f
commit 65b5d86e6c
4 changed files with 46 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
0.4.25 (in development)
------------------------------------------------------------------------
- Feature: [#24702] [Plugin] Add bindings for missing cheats (forcedParkRating, ignoreRidePrice, makeAllDestructible).
- Fix: [#24598] Cannot load .park files that use official legacy footpaths by accident.
0.4.24 (2025-07-05)

View File

@@ -4589,6 +4589,7 @@ declare global {
interface Cheats {
allowArbitraryRideTypeChanges: boolean;
allowSpecialColourSchemes: boolean;
allowTrackPlaceInvalidHeights: boolean;
buildInPauseMode: boolean;
disableAllBreakdowns: boolean;
@@ -4603,10 +4604,13 @@ declare global {
enableAllDrawableTrackPieces: boolean;
enableChainLiftOnAllTrack: boolean;
fastLiftHill: boolean;
forcedParkRating: number;
freezeWeather: boolean;
ignoreResearchStatus: boolean;
ignoreRideIntensity: boolean;
ignoreRidePrice: boolean;
neverendingMarketing: boolean;
makeAllDestructible: boolean;
sandboxMode: boolean;
showAllOperatingModes: boolean;
showVehiclesFromOtherTrackTypes: boolean;

View File

@@ -46,7 +46,7 @@ namespace OpenRCT2
namespace OpenRCT2::Scripting
{
static constexpr int32_t kPluginApiVersion = 108;
static constexpr int32_t kPluginApiVersion = 109;
// Versions marking breaking changes.
static constexpr int32_t kApiVersionPeepDeprecation = 33;

View File

@@ -66,14 +66,19 @@ namespace OpenRCT2::Scripting
ctx, &ScCheats::ignoreResearchStatus_get, &ScCheats::ignoreResearchStatus_set, "ignoreResearchStatus");
dukglue_register_property(
ctx, &ScCheats::ignoreRideIntensity_get, &ScCheats::ignoreRideIntensity_set, "ignoreRideIntensity");
dukglue_register_property(ctx, &ScCheats::ignoreRidePrice_get, &ScCheats::ignoreRidePrice_set, "ignoreRidePrice");
dukglue_register_property(
ctx, &ScCheats::neverendingMarketing_get, &ScCheats::neverendingMarketing_set, "neverendingMarketing");
dukglue_register_property(
ctx, &ScCheats::forcedParkRating_get, &ScCheats::forcedParkRating_set, "forcedParkRating");
dukglue_register_property(ctx, &ScCheats::sandboxMode_get, &ScCheats::sandboxMode_set, "sandboxMode");
dukglue_register_property(
ctx, &ScCheats::showAllOperatingModes_get, &ScCheats::showAllOperatingModes_set, "showAllOperatingModes");
dukglue_register_property(
ctx, &ScCheats::showVehiclesFromOtherTrackTypes_get, &ScCheats::showVehiclesFromOtherTrackTypes_set,
"showVehiclesFromOtherTrackTypes");
dukglue_register_property(
ctx, &ScCheats::makeAllDestructible_get, &ScCheats::makeAllDestructible_set, "makeAllDestructible");
}
private:
@@ -297,6 +302,17 @@ namespace OpenRCT2::Scripting
getGameState().cheats.ignoreRideIntensity = value;
}
bool ignoreRidePrice_get()
{
return getGameState().cheats.ignorePrice;
}
void ignoreRidePrice_set(bool value)
{
ThrowIfGameStateNotMutable();
getGameState().cheats.ignorePrice = value;
}
bool neverendingMarketing_get()
{
return getGameState().cheats.neverendingMarketing;
@@ -308,6 +324,19 @@ namespace OpenRCT2::Scripting
getGameState().cheats.neverendingMarketing = value;
}
int32_t forcedParkRating_get()
{
return getGameState().cheats.forcedParkRating;
}
void forcedParkRating_set(int32_t value)
{
ThrowIfGameStateNotMutable();
int32_t adjusted = std::max(-1, std::min(value, 999));
getGameState().cheats.forcedParkRating = adjusted;
Park::SetForcedRating(adjusted);
}
bool sandboxMode_get()
{
return getGameState().cheats.sandboxMode;
@@ -340,6 +369,17 @@ namespace OpenRCT2::Scripting
ThrowIfGameStateNotMutable();
getGameState().cheats.showVehiclesFromOtherTrackTypes = value;
}
bool makeAllDestructible_get()
{
return getGameState().cheats.makeAllDestructible;
}
void makeAllDestructible_set(bool value)
{
ThrowIfGameStateNotMutable();
getGameState().cheats.makeAllDestructible = value;
}
};
} // namespace OpenRCT2::Scripting