Skip to main content
The park object provides access to park management, finances, ratings, and guest-related functionality.

Financial Properties

cash
number
The current cash balance of the park.
park.cash = 50000; // Set cash to £50,000
console.log(`Cash: ${park.cash}`);
bankLoan
number
The current bank loan amount.
park.bankLoan = 10000; // Set loan to £10,000
maxBankLoan
number
The maximum bank loan available.
park.maxBankLoan = 50000;
entranceFee
number
The current entrance fee for the park.
park.entranceFee = 1000; // £10.00 entrance fee
landPrice
number
The purchase price of one tile for park ownership.
console.log(`Land costs ${park.landPrice} per tile`);
constructionRightsPrice
number
The purchase price of one tile for construction rights.
console.log(`Construction rights cost ${park.constructionRightsPrice}`);

Park Status

rating
number
The park rating from 0 to 999.
console.log(`Park rating: ${park.rating}`);
value
number
The park value, updated every 512 ticks.
console.log(`Park value: ${park.value}`);
companyValue
number
The company value, updated every 512 ticks. Calculated as: park.value + park.cash - park.bankLoan
console.log(`Company value: ${park.companyValue}`);
parkSize
number
The number of tiles on the map with park ownership or construction rights. Updated every 4096 ticks.
console.log(`Park size: ${park.parkSize} tiles`);
name
string
The name of the park shown on the park entrance.
park.name = 'My Amazing Theme Park';
casualtyPenalty
number
The penalty points currently applied to the park rating for drowned guests and crashed coaster cars.
console.log(`Casualty penalty: ${park.casualtyPenalty}`);

Guest Management

guests
number
The number of guests within the park (not including guests outside but still on the map).
console.log(`Guests in park: ${park.guests}`);
suggestedGuestMaximum
number
The maximum number of guests that will spawn naturally (soft guest cap). In scenarios with difficult guest generation, guests won’t spawn above this value without advertisements.
console.log(`Max guests: ${park.suggestedGuestMaximum}`);
guestGenerationProbability
number
The probability out of 65535 that guests will spawn per tick. Guests per second = 40 * (guestGenerationProbability / 65535)
const guestsPerSecond = 40 * (park.guestGenerationProbability / 65535);
console.log(`Guest spawn rate: ${guestsPerSecond.toFixed(2)}/s`);
guestInitialCash
number
The average amount of cash guests spawn with.
console.log(`Guests spawn with ${park.guestInitialCash} cash`);
guestInitialHappiness
number
The average happiness guests spawn at (0-255).
console.log(`Guest happiness: ${park.guestInitialHappiness}`);
guestInitialHunger
number
The average hunger guests spawn at (0-255).
console.log(`Guest hunger: ${park.guestInitialHunger}`);
guestInitialThirst
number
The average thirst guests spawn at (0-255).
console.log(`Guest thirst: ${park.guestInitialThirst}`);
totalAdmissions
number
The total number of guests that have entered the park.
console.log(`Total admissions: ${park.totalAdmissions}`);
totalIncomeFromAdmissions
number
The total amount of income gained from admissions into the park.
console.log(`Admission income: ${park.totalIncomeFromAdmissions}`);
totalRideValueForMoney
number
The sum of ride values, used to determine the most guests will pay to enter the park and for some awards. Calculated as: sum of (ride value - ride price) * 2
console.log(`Total ride value: ${park.totalRideValueForMoney}`);

generateGuest()

Spawns a new guest at a random peep spawn point.
The “guest.generation” hook will be called before this function returns.
const newGuest = park.generateGuest();
console.log(`Generated guest ${newGuest.id}: ${newGuest.name}`);

Research

research
Research
The current research status, including what has and hasn’t been researched.
console.log(`Research funding: ${park.research.funding}`);
console.log(`Expected item: ${park.research.expectedItem?.type}`);

Park Flags

getFlag()

Gets whether a given flag is set.
flag
ParkFlags
required
The flag to test. Can be:
  • "difficultGuestGeneration"
  • "difficultParkRating"
  • "forbidHighConstruction"
  • "forbidLandscapeChanges"
  • "forbidMarketingCampaigns"
  • "forbidTreeRemoval"
  • "freeParkEntry"
  • "noMoney"
  • "open"
  • "preferLessIntenseRides"
  • "preferMoreIntenseRides"
  • "scenarioCompleteNameInput"
  • "unlockAllPrices"
if (park.getFlag('open')) {
  console.log('Park is open');
}

if (park.getFlag('freeParkEntry')) {
  console.log('Free entry enabled');
}

setFlag()

Sets a flag to the given value.
flag
ParkFlags
required
The flag to set.
value
boolean
required
Whether to set or clear the flag.
park.setFlag('open', true); // Open the park
park.setFlag('freeParkEntry', true); // Enable free entry

Messages and Awards

messages
ParkMessage[]
The park message/notification queue and historical messages.
park.messages.forEach(msg => {
  console.log(`${msg.type}: ${msg.text}`);
});

postMessage()

Posts a message to the park message queue.
message
string
required
The message text to post.
park.postMessage('Welcome to the park!');
awards
Award[]
The current awards of the park.
park.awards.forEach(award => {
  console.log(`${award.text} (${award.monthsRemaining} months)`);
});

clearAwards()

Clears all awards from the park.
park.clearAwards();

grantAward()

Grants an award to the park without checking eligibility.
type
AwardType
required
The award type to grant: “mostUntidy”, “mostTidy”, “bestRollerCoasters”, “bestValue”, “mostBeautiful”, “worstValue”, “safest”, “bestStaff”, “bestFood”, “worstFood”, “bestToilets”, “mostDisappointing”, “bestWaterRides”, “bestCustomDesignedRides”, “mostDazzlingRideColours”, “mostConfusingLayout”, “bestGentleRides”
park.grantAward('bestRollerCoasters');
If the park already has 4 active awards, the oldest will be removed.

Financial History

getMonthlyExpenditure()

Gets the monthly expenditure history for a given type.
type
ExpenditureType
required
The type of expenditure: “ride_construction”, “ride_runningcosts”, “land_purchase”, “landscaping”, “park_entrance_tickets”, “park_ride_tickets”, “shop_sales”, “shop_stock”, “food_drink_sales”, “food_drink_stock”, “wages”, “marketing”, “research”, “interest”
const rideConstruction = park.getMonthlyExpenditure('ride_construction');
console.log(`This month: ${rideConstruction[0]}`);
console.log(`Last month: ${rideConstruction[1]}`);

// Calculate total for last 3 months
const total = rideConstruction.slice(0, 3).reduce((sum, v) => sum + v, 0);
console.log(`Last 3 months total: ${total}`);

Usage Examples

Park Status Dashboard

function showParkStatus() {
  console.log('=== Park Status ===');
  console.log(`Name: ${park.name}`);
  console.log(`Rating: ${park.rating}`);
  console.log(`Cash: £${(park.cash / 10).toFixed(2)}`);
  console.log(`Loan: £${(park.bankLoan / 10).toFixed(2)}`);
  console.log(`Value: £${(park.value / 10).toFixed(2)}`);
  console.log(`Guests: ${park.guests} / ${park.suggestedGuestMaximum}`);
  console.log(`Open: ${park.getFlag('open')}`);
}

Auto-Open Park

context.subscribe('interval.day', () => {
  if (!park.getFlag('open') && park.rating >= 600) {
    park.setFlag('open', true);
    park.postMessage('Park is now open!');
  }
});

Guest Spawner

// Spawn a guest every 5 seconds
context.setInterval(() => {
  if (park.guests < park.suggestedGuestMaximum) {
    park.generateGuest();
  }
}, 5000);