Guests are park visitors that can be found using map.getAllEntities('guest'). Each guest has properties controlling their appearance, needs, thoughts, and items.
Accessing Guests
// Get all guests
const guests = map.getAllEntities('guest');
// Get a specific guest by ID
const guest = map.getEntity(guestId);
// Get guests on a specific tile
const guestsOnTile = map.getAllEntitiesOnTile('guest', { x: 64, y: 64 });
Appearance Properties
Name of the guest.guest.name = 'John Smith';
console.log(`Guest: ${guest.name}`);
Colour of the guest’s t-shirt (0-31).guest.tshirtColour = 10; // Change shirt color
Colour of the guest’s trousers (0-31).guest.trousersColour = 5;
Colour of the guest’s balloon if they have one.
Colour of the guest’s hat if they have one.
Colour of the guest’s umbrella if they have one.guest.umbrellaColour = 12;
Status Properties
How happy the guest is (0-255). Higher is happier.console.log(`Happiness: ${guest.happiness}`);
guest.happiness = 255; // Make guest very happy
The target happiness value. Happiness slowly moves towards this value.guest.happinessTarget = 200;
How tired the guest is (32-128). Lower values mean more tired.console.log(`Energy: ${guest.energy}`);
The target energy value.guest.energyTarget = 120;
How nauseated the guest is (0-255). Higher values mean more nauseated.if (guest.nausea > 200) {
console.log(`${guest.name} feels very sick!`);
}
The target nausea value.guest.nauseaTarget = 0; // Target feeling better
How hungry the guest is (0-255). Lower values mean more hungry.if (guest.hunger < 100) {
console.log(`${guest.name} is hungry`);
}
How thirsty the guest is (0-255). Lower values mean more thirsty.if (guest.thirst < 100) {
console.log(`${guest.name} is thirsty`);
}
How much the guest needs the toilet (0-255). Higher values mean more urgent.if (guest.toilet > 180) {
console.log(`${guest.name} needs a toilet!`);
}
The mass of the guest. Affects vehicle mass on rides.console.log(`Mass: ${guest.mass}`);
Preferences
The guest’s minimum preferred intensity (0-15).console.log(`Min intensity: ${guest.minIntensity}`);
The guest’s maximum preferred intensity (0-15).console.log(`Max intensity: ${guest.maxIntensity}`);
The guest’s tolerance to nauseating rides (0-3).console.log(`Nausea tolerance: ${guest.nauseaTolerance}`);
The ride ID of the guest’s favourite ride, or null if none.if (guest.favouriteRide !== null) {
const ride = map.getRide(guest.favouriteRide);
console.log(`Favourite: ${ride.name}`);
}
Financial
Amount of cash in the guest’s pocket.console.log(`Cash: £${guest.cash / 10}`);
guest.cash = 5000; // Give guest £50
Location
Whether the guest is within the park boundaries.if (guest.isInPark) {
console.log(`${guest.name} is in the park`);
}
Whether the guest is lost (lostCountdown < 90).if (guest.isLost) {
console.log(`${guest.name} is lost!`);
}
Countdown (0-255) tracking how long the guest has been looking for their destination.console.log(`Lost countdown: ${guest.lostCountdown}`);
The guest’s direct destination coordinates.console.log(`Heading to: (${guest.destination.x}, ${guest.destination.y})`);
The guest’s orthogonal direction (0-3).console.log(`Facing direction: ${guest.direction}`);
Thoughts
The list of thoughts this guest has.guest.thoughts.forEach(thought => {
console.log(thought.toString());
});
Each thought has:
type - The thought type (e.g., “sick”, “hungry”, “was_great”)
item - The thought argument (ride ID, shop item, etc.)
freshness - How fresh the thought is (lower = more recent)
freshTimeout - The freshness timeout
toString() - Get formatted string with Unicode quotes
function analyzeThoughts(guest) {
const thoughtTypes = {};
guest.thoughts.forEach(thought => {
thoughtTypes[thought.type] = (thoughtTypes[thought.type] || 0) + 1;
});
console.log(`${guest.name}'s thoughts:`, thoughtTypes);
}
Items
The list of items this guest has.console.log(`${guest.name} has ${guest.items.length} items`);
hasItem()
Checks whether the guest has a certain item.
if (guest.hasItem('map')) {
console.log(`${guest.name} has a map`);
}
if (guest.hasItem('umbrella')) {
console.log(`${guest.name} has an umbrella`);
}
giveItem()
Gives an item to the guest. Guests can only have one item of each type.
// Give simple item
guest.giveItem('balloon');
guest.giveItem('map');
guest.giveItem('umbrella');
// Give photo with ride ID
guest.giveItem({
type: 'photo1',
rideId: 0
});
// Give voucher
guest.giveItem({
type: 'voucher',
voucherType: 'entry_free'
});
removeItem()
Removes an item from the guest’s possession.
guest.removeItem('balloon');
guest.removeItem('map');
removeAllItems()
Removes all items from the guest’s possession.
guest.removeAllItems();
console.log('All items removed');
Animations
The animations available to this guest.console.log('Available animations:', guest.availableAnimations);
The animation the guest is currently exhibiting.
Animations include: “walking”, “checkTime”, “watchRide”, “eatFood”, “shakeHead”, “emptyPockets”, “wow”, “throwUp”, “jump”, “joy”, “readMap”, “wave”, “takePhoto”, “clap”, etc.console.log(`Current animation: ${guest.animation}`);
guest.animation = 'wave'; // Make guest wave
The frame offset in the current animation.console.log(`Animation frame: ${guest.animationOffset}`);
The total number of frames in the current animation.console.log(`Animation length: ${guest.animationLength}`);
getAnimationSpriteIds()
Gets an array of sprite IDs representing a particular guest animation.
The animation to get sprites for.
const sprites = guest.getAnimationSpriteIds('wave', 0);
console.log('Wave animation sprites:', sprites);
Flags
getFlag()
Gets whether a given flag is set.
if (guest.getFlag('tracking')) {
console.log(`${guest.name} is being tracked`);
}
if (guest.getFlag('leavingPark')) {
console.log(`${guest.name} is leaving`);
}
setFlag()
Sets a flag to the given value.
Whether to set or clear the flag.
guest.setFlag('tracking', true); // Enable tracking
guest.setFlag('leavingPark', false); // Stop guest from leaving
Available flags: “leavingPark”, “slowWalk”, “tracking”, “waving”, “hasPaidForParkEntry”, “photo”, “painting”, “wow”, “litter”, “lost”, “hunger”, “toilet”, “crowded”, “happiness”, “nausea”, “purple”, “pizza”, “explode”, “rideShouldBeMarkedAsFavourite”, “parkEntranceChosen”, “contagious”, “joy”, “angry”, “iceCream”, “hereWeAre”, “positionFrozen”, “animationFrozen”
Usage Examples
Find Unhappy Guests
function findUnhappyGuests() {
const guests = map.getAllEntities('guest');
const unhappy = guests.filter(g => g.happiness < 100);
console.log(`Found ${unhappy.length} unhappy guests`);
unhappy.forEach(guest => {
console.log(`${guest.name}: Happiness ${guest.happiness}`);
guest.thoughts.forEach(thought => {
console.log(` - ${thought.toString()}`);
});
});
}
Guest Status Report
function guestReport(guest) {
console.log(`=== ${guest.name} ===`);
console.log(`Location: (${guest.x}, ${guest.y}, ${guest.z})`);
console.log(`In park: ${guest.isInPark}`);
console.log(`Cash: £${(guest.cash / 10).toFixed(2)}`);
console.log(`Happiness: ${guest.happiness}/255`);
console.log(`Energy: ${guest.energy}`);
console.log(`Hunger: ${guest.hunger}`);
console.log(`Thirst: ${guest.thirst}`);
console.log(`Nausea: ${guest.nausea}`);
console.log(`Items: ${guest.items.map(i => i.type).join(', ')}`);
}
Give Free Items
function giveFreeItems() {
const guests = map.getAllEntities('guest');
guests.forEach(guest => {
if (!guest.hasItem('map')) {
guest.giveItem('map');
}
if (climate.current.weather === 'rain' && !guest.hasItem('umbrella')) {
guest.giveItem('umbrella');
}
});
}
Make Everyone Happy
function makeEveryoneHappy() {
const guests = map.getAllEntities('guest');
guests.forEach(guest => {
guest.happiness = 255;
guest.happinessTarget = 255;
guest.energy = 128;
guest.hunger = 255;
guest.thirst = 255;
guest.nausea = 0;
guest.toilet = 0;
});
console.log(`Made ${guests.length} guests happy!`);
}