Skip to content

Scripting: tailor costume assignment to each staff type#21714

Merged
Gymnasiast merged 10 commits into
OpenRCT2:developfrom
AaronVanGeffen:staff-costumes
May 5, 2024
Merged

Scripting: tailor costume assignment to each staff type#21714
Gymnasiast merged 10 commits into
OpenRCT2:developfrom
AaronVanGeffen:staff-costumes

Conversation

@AaronVanGeffen

Copy link
Copy Markdown
Member

In order to transition staff costumes to objects, we must further disentangle staff from regular peeps. This has many advantages, such as making custom entertainers or even handymen costumes. However, this means putting some restrictions on what costumes can be assigned to staff in the mean while.

We are aware of plug-ins allowing staff to be decorated like normal peeps, though, e.g. using @Manticore-007's Peep Editor. Splitting staff from peeps will mean breaking such functionality. We can do our very best to reverting 'invalid' staff to their normal outfits instead of them outright disappearing. However, in the mean time, we should disallow peep costumes from being assigned to staff to prevent further disappointment down the line.

Once we get to actually adding custom staff costumes, I plan to add a new plug-in API to get available costumes for a particular staff type. This would apply to entertainers, but also other staff types. This should make it easier for plug-in authors to tap into custom costumes in the future.

I realise this may not be a popular change in the short term. However, I firmly believe it will be worth it in the long run. Please let us know if we can do anything to further smoothen this transition.

@Manticore-007

Copy link
Copy Markdown

Lots of DKMP players use the "guest costumes" as ride operators or employees selling food. If it's gonna be possible to freeze guests and be able to give them items, this issue can be solved.
Freezing guests also will have a concequence for the park rating so that needs to be taken into account.

@AaronVanGeffen

Copy link
Copy Markdown
Member Author

Thanks for weighing in @Manticore-007. I appreciate what your community is doing with the game, so I'll try to be accommodating, within reason. Either way, the current situation is hacky and messy, exposing state that shouldn't be. Let's work towards something that is a bit more sustainable. That is, we allow for creativity, whilst not getting staff entities into a state their shouldn't be in.

From your community's perspective, I see the following:

  • Desire to render peeps and staff 'frozen', tweaking their state and position such that they take part in a narrative of sorts (e.g. peeps permanently sitting around a campfire)
  • Currently, entertainers are used for this purpose, as it's the only entity type whose appearance can be changed through scripting.

Thinking about this, we could do two things:

  1. Add a 'costumeless' entertainer variant, rendering them as a normal peep. This would still just be a basic 'costume'; no food can/should be assigned in this case.
  2. Make peeps properly freezable and editable, allowing for changing state (jumping, sitting, eating...), with a special case of specifying food when eating.

The more I think about it, the more caveats I see, though. You've already mentioned park rating might be affected. Similarly, we'd need to make ensure cheats like 'remove all guests' and the 'energy' cheats don't affect the 'special' peeps, much like how they don't affect staff right now.

For now, I think we can add an exception to still allow assigning the 'normal' peep costume to entertainers. We can decide on how best to convert them later, depending on whether we go with route 1 or 2.

Either way, I would much prefer we disallow the food modifiers entirely for now. This is really a kind of state I would prefer staff to never be in.

Existing parks won't be affected while we work out the details. These staff/entertainer objects won't be ready for a while yet.

I hope this is an acceptable compromise. Please feel free to weigh in with your thoughts.

@ZehMatt

ZehMatt commented Apr 4, 2024

Copy link
Copy Markdown
Contributor

Given those peeps/guests/entertainers are typically frozen why not have animated scenery object instead, perhaps there are some limits I'm not aware of but we could look into making that better.

@Basssiiie

Basssiiie commented Apr 4, 2024

Copy link
Copy Markdown
Member

To be honest, I think these changes should be part of when the new objects and API's are thought out and ready, not when it's the old API's are still actively used. It's not really stopping anything as the API's are already used in a lot of parks. We'll already have to deal with that and that won't change if we block it now or later, but the disappointment will have a bigger impact if we do it now with no further concrete replacements.

Given those peeps/guests/entertainers are typically frozen

Typically they're frozen, but not always. For example, these dancing and waving guest entertainers here.

@AaronVanGeffen

Copy link
Copy Markdown
Member Author

After talking with @duncanspumpkin, I think it's best to add a new flag to peeps that freezes them completely.

We could expose this to plugins by means of a new boolean property, e.g. frozen (true/false). We could then also add a new property to set the food item peeps are carrying, changing their animation 'costume'. This would replicate current 'functionality' in a more constructive way.

Caveats I see, as above, are that such peeps should not be removed by the 'remove all guests' cheat, nor should they affect park ratings. I think the latter should be fine, though, given such peeps would not lose energy, or change state (and therefore not into a 'lost' state). They will, however, still count as guests.

Another caveat that Duncan mentioned, is that we should avoid freezing peeps that are on rides. This may seem obvious, but players have tried to do stranger things...

We would also need to change staff members that have 1) been frozen and 2) have a non-staff outfit into normal guests. Perhaps we should increment the park version so this pass does not have to be done for newer parks.

After the above has been implement, staffs should never look like peeps any more. That means the road is clear for staff uniforms/costumed to be extracted to objects.

Does this sound good? Any further caveats/ideas/roadblocks/feedback you can see, before we proceed with implementation?

@AaronVanGeffen

AaronVanGeffen commented Apr 5, 2024

Copy link
Copy Markdown
Member Author

Sorry @Basssiiie, it seems our comments were posted mere minutes apart. I didn't mean to ignore yours.

To be honest, I think these changes should be part of when the new objects and API's are thought out and ready, not when it's the old API's are still actively used. It's not really stopping anything as the API's are already used in a lot of parks. We'll already have to deal with that and that won't change if we block it now or later, but the disappointment will have a bigger impact if we do it now with no further concrete replacements.

I agree. This PR should not be merged before alternatives are in place. Let me make that clear by marking it as draft.

Given those peeps/guests/entertainers are typically frozen

Typically they're frozen, but not always. For example, these dancing and waving guest entertainers here.

Okay, that just means we'll have to support entertainers in 'peep suits' then. Perhaps we can call this 'out of costume', though hidden by default.

I just draw the line at getting entertainers into a food-holding state. That should really be addressed with regular peeps 😅

@AaronVanGeffen AaronVanGeffen marked this pull request as draft April 5, 2024 11:26
@AaronVanGeffen AaronVanGeffen marked this pull request as draft April 5, 2024 11:26
@Basssiiie

Basssiiie commented Apr 5, 2024

Copy link
Copy Markdown
Member

Sorry @Basssiiie, it seems our comments were posted mere minutes apart. I didn't mean to ignore yours.

@AaronVanGeffen No worries, I've been too busy anyway! 😅

I just draw the line at getting entertainers into a food-holding state. That should really be addressed with regular peeps 😅

How did you have this in mind, some kind of unlimited bites on a food item so it cannot run out for walking staff with food? I think there's some cases where the sandwich food is used like a sword or flute or something, for example.

If it helps, I can find some more examples and existing use cases to help us find work towards a nice API. It would also help if you/we work out the idea for how the potential new costume objects etc. should look like, so we can work towards bringing both ends together. I'm imagining there will still be some form of animation sets we can maybe work with? But that's just guessing at the moment. 😅

Edit: I do think the rest sounds good, I'd just like all bases covered. AFAIK the PeepEditor is the only one using these properties, and Manticore mentioned to me he was willing to update it to keep it working with a better API, so I think the breaking changes are acceptable for the greater good, if we can cover the preferred bases. :)

@AaronVanGeffen

Copy link
Copy Markdown
Member Author

I just draw the line at getting entertainers into a food-holding state. That should really be addressed with regular peeps 😅

How did you have this in mind, some kind of unlimited bites on a food item so it cannot run out for walking staff with food? I think there's some cases where the sandwich food is used like a sword or flute or something, for example.

Definitely in combination with the peep 'frozen' flag I mentioned in my previous comment (which coincided with yours). We'd have to convert these staff to normal peeps in the process, ensuring parks don't break, though.

If it helps, I can find some more examples and existing use cases to help us find work towards a nice API. It would also help if you/we work out the idea for how the potential new costume objects etc. should look like, so we can work towards bringing both ends together.

Yes, that sounds like a good idea. Perhaps we can coordinate something through Discord? My DMs are open :)

I'm imagining there will still be some form of animation sets we can maybe work with? But that's just guessing at the moment. 😅

Definitely. I've been refactoring a bunch to that end lately. Please take a look at #21711, for example.

@Basssiiie

Basssiiie commented Apr 7, 2024

Copy link
Copy Markdown
Member

Some examples of peep scenes, the dancing scene with moving peep staff that either wave or jump (made by Bluetiful Monday):

2024-04-0719-22-47-ezgif.com-video-to-webp-converter.mp4

Frozen staff as handymen and peeps with sandwiches and a balloon rope without balloon, forming an orchestra (made by Melmak):
image

Frozen staff as peeps and balloons (made by Manticore):
image

Frozen staff with a hat and a staff as a floating hat (invisible peep) as Santa (made by Manticore):
image

Frozen staff as wizards and a frozen mechanic, with litter items as beards and hats (made by BallpitWarrior):
image

Walking staff as peeps with food, and also jumping/waving (made by Enox/Deurklink):

2024-04-07.20-01-00.mp4

Frozen peeps with food items and sunglasses (made by Enox/Deurklink):
Bumbly Beach 2024-04-07 19-58-40

A pdf from Manticore showing a lot of combinations currently possible:
Peep_animation_sprites_-_Blad1.pdf

This should be most cases with the least amount of duplicates.

After speaking with Aaron on Discord and it seems the following set up could make it all work:

For staff posing as guests:

  • They get converted to appropriate guest setup, including food/drink/other items.
  • They get a flag that can freeze stats, which means;
    • Food items don't decay.
    • They don't get lost or want to go home.
    • They don't contribute to the park rating.
    • When their energy is set to 0, they won't regain energy.
    • When they do have a non-zero energy, they can still walk around like they could do before (as if they're entertainers) and won't interact with any rides/stalls/park entrances.

For actual frozen staff members, there doesn't seem to be much that needs to be converted, apart from old costume system to new costume system.

One thing I'm not yet sure about is where the floating balloons/hats/umbrella's would fit. Frozen guests? A hidden staff costume? A special litter entity? Or another entity type?

Edit: Another thing I just found out... The walking staff with guest costume and food item in Enox's park have staff zones as well. 😅

@AaronVanGeffen

Copy link
Copy Markdown
Member Author

Thanks for the examples and summary, @Basssiiie.

One thing I'm not yet sure about is where the floating balloons/hats/umbrella's would fit. Frozen guests? A hidden staff costume? A special litter entity? Or another entity type?

Oh noo, this is yet another hack on another level 😅 Honestly, I'll need to have a think about it. I suppose they stay hidden, frozen peeps. What items they possess shouldn't be an issue, so long as we convert these staff to hold them. Good that you pointed this out, because I certainly wasn't aware of hacked staff on this level.

These kinds of hacks are why I filed this PR in the first place, tbh. I'd rather we narrow the scope of these APIs early, adding new features explicitly rather than seeing parks rely on undefined behaviour...

@AaronVanGeffen

Copy link
Copy Markdown
Member Author

Following up in #21913. After that PR has been finished and (hopefully) merged, we can revisit this.

@AaronVanGeffen

AaronVanGeffen commented Apr 28, 2024

Copy link
Copy Markdown
Member Author

Given the food properties added by #21062, I believe all ingredients are set to merge this after #21913.

I've reworked the PR as follows:

  • Continue allowing 'peep' style costumes, dubbed none costumes.
  • Allow scripts to set costume property by string (or number, as before).
  • Allow scripts to fetch a list of available costumes for current staff type via the availableCostumes property.
  • Allow costume changes for all staff types, not just entertainers, but limited to costumes for the staff type. (Handymen and mechanics have just one, security staff have two, entertainers have 12, including none)

Requires testing. Shouldn't crash the old/current Peep Editor, but will limit its effect. @Basssiiie and @Manticore-007, could you test this?

We should probably bump the plugin version number before merging.

@AaronVanGeffen AaronVanGeffen marked this pull request as ready for review April 28, 2024 21:00
@AaronVanGeffen AaronVanGeffen changed the title Limit what costumes can be assigned to staff Scripting: tailor costume assignment to each staff type Apr 28, 2024
Comment thread distribution/openrct2.d.ts Outdated
Comment thread src/openrct2/scripting/bindings/entity/ScStaff.cpp
Comment thread distribution/openrct2.d.ts
Comment thread src/openrct2/scripting/bindings/entity/ScStaff.cpp
@Manticore-007

Copy link
Copy Markdown

First test with the current Peep Editor doesn't crash the game, it gives error messages:
image

CLI:
image

The entertainer still can be turned into a guest(Peep Editor costume), the costume shows as "none" in the CLI.
But when yiou click an entertainer with guest costume, you will get the following:
image
image

there is no crash of the game doing this.

@Basssiiie Basssiiie left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only issue I found is that assigning security1 only assigns it for a second or so. After that the guard switches back to security2. But I think this is likely due to the state machine outside of this PR?

I did notice security1 is used when the guard is falling. He'll switch to the 1st costume after a second or so, until he has landed, after which he'll switch back to security2 after a few seconds. The first costume can also sometimes be triggered by picking him up and dropping him, so it's probably tied to some tick % 128 == 0 or something.

As is usual, click here for my test script.
registerPlugin({
	name: "Test staff costumes",
	version: "1",
	authors: ['Basssiiie'],
	targetApiVersion: 82,
	type: "local",
	licence: "MIT",
	main()
	{
		ui.registerMenuItem("Test staff costumes", function()
		{
			ui.activateTool({
				id: "test-peep-costumes",
				cursor: "cross_hair",
				onDown: function(args)
				{
					var id = args.entityId;
					if (id == undefined) return;

					var staff = map.getEntity(id);
					if (staff.type !== "staff") return;

					var costumes = staff.availableCostumes;
					var window = ui.openWindow({
						classification: "test-staff-costumes",
						title: "Staff costumes",
						width: 210,
						height: 80,
						onUpdate: function()
						{
							var animShow = window.findWidget("costume-show");
							animShow.text = "Costume: " + staff.costume
						},
						widgets: [
							{
								type: "label",
								x: 5,
								y: 20,
								width: 200,
								height: 15,
								text: "Name: " + staff.name
							},
							{
								name: "costume-show",
								type: "label",
								x: 5,
								y: 40,
								width: 200,
								height: 15,
								text: "Costume: " + staff.costume
							},
							{
								type: "dropdown",
								x: 5,
								y: 60,
								width: 200,
								height: 15,
								items: costumes,
								onChange: function(index)
								{
									staff.costume = costumes[index];
								}
							}
						]
					})
				}
			})
		})
	}
});

@AaronVanGeffen

AaronVanGeffen commented May 4, 2024

Copy link
Copy Markdown
Member Author

@Manticore-007:

First test with the current Peep Editor doesn't crash the game, it gives error messages: !

This is indeed expected. You can no longer assign entertainer costumes to non-entertainer members. This is due to handymen/mechanics/security staff not having all of each other's animations, and so could eventually lead to a crash.

The entertainer still can be turned into a guest(Peep Editor costume), the costume shows as "none" in the CLI.

This too is expected. Allowing them to be turned into a guest is a concession, as discussed in this PR. Regular guests have a superset of the animations and sprites that entertainers need, so it will render fine.

But when yiou click an entertainer with guest costume, you will get the following:

Requesting the current costume with .costume will now return a string rather than an integer, which the script is apparently expecting. Unfortunately, I don't see a way around that.

@Basssiiie:

Only issue I found is that assigning security1 only assigns it for a second or so. After that the guard switches back to security2. But I think this is likely due to the state machine outside of this PR?

That's correct, yes.

I did notice security1 is used when the guard is falling. He'll switch to the 1st costume after a second or so, until he has landed, after which he'll switch back to security2 after a few seconds. The first costume can also sometimes be triggered by picking him up and dropping him, so it's probably tied to some tick % 128 == 0 or something.

Spot on:

void Staff::Tick128UpdateStaff()
{
    if (AssignedStaffType != StaffType::Security)
        return;

    PeepSpriteType newSpriteType = PeepSpriteType::SecurityAlt;
    if (State != PeepState::Patrolling)
        newSpriteType = PeepSpriteType::Security;

@Basssiiie Basssiiie left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ohh it's nice to be so right. 😆 Anyway, LGTM then!

@Gymnasiast Gymnasiast merged commit 831c765 into OpenRCT2:develop May 5, 2024
@Gymnasiast Gymnasiast added this to the v0.4.12 milestone May 5, 2024
@AaronVanGeffen AaronVanGeffen deleted the staff-costumes branch May 5, 2024 20:43
janisozaur added a commit that referenced this pull request Jul 7, 2024
- Feature: [#622] Add option to align the top toolbar buttons horizontally centred (off by default).
- Feature: [#20263] Ability to increase the size of the map in the (0, 0) direction.
- Feature: [#21714] [Plugin] Costume assignment is now tailored to each staff type.
- Feature: [#21853] Enlarged UI mode.
- Feature: [#21893, #22065] On launch, the game now indicates what system is being initialised.
- Feature: [#21913] [Plugin] Allow precise and safe control of peep animations.
- Feature: [#22046] [Plugin] Add interface for crashed vehicle particle.
- Feature: [#22085] [Plugin] The result of actions that create banners now includes the bannerIndex.
- Feature: [#22087] [Plugin] Expose guests’ favourite rides to the plugin API.
- Feature: [#22090] [Plugin] Allow writing of paused state in non-networked settings.
- Feature: [#22140] Add option to automatically close dropdown menus if Enlarged UI is enabled.
- Feature: [#22150] [Plugin] Expose monthly expenditure history to the plugin API.
- Feature: [#22210] [Plugin] Peeps can now be made stationary or completely frozen.
- Feature: [#22210] [Plugin] The direction in which a peep is facing can now be manipulated.
- Improved: [#19870] Allow using new colours in UI themes.
- Improved: [#21774] The Alpine Coaster now supports using the alternative colour schemes.
- Improved: [#21853] Dropdowns now automatically use multiple columns if they are too tall for the screen.
- Improved: [#21981] Rendering performance of the map window has been improved considerably.
- Improved: [#21981] The map window now defaults to showing as much of the map as fits the screen.
- Improved: [#21983] Taking a screenshot now shows a message again, closing when taking another.
- Improved: [#22026] The options window now stays centred when window scaling is changed.
- Improved: [#22060] [Plugin] The scroll wheel can now be used to modify spinner widget values in custom/script windows.
- Improved: [#22065] Joining a network game now indicates progress using coaster trains.
- Improved: [#22075] [Plugin] Plugins can now use G1 Icons.
- Improved: [#22084] The game now temporarily pauses while the load/save window is open.
- Improved: [#22217] See-through items are ignored again in viewport/pointer interaction.
- Improved: [objects#238] Add preview image for invisible queue.
- Improved: [objects#329] Add RCT1AA lay-down coaster trains (for import only).
- Change: [#7248] Small mini-maps are now centred in the map window.
- Change: [#20240] Heavy snow and blizzards now make guests buy and use umbrellas.
- Change: [#21043] The new music styles are no longer added to old parks automatically.
- Change: [#21214] Wacky Worlds and Time Twister’s scenario names now match their park names.
- Change: [#21991] UI themes JSON now use colour names and a translucency bool, instead of a number (old themes still work).
- Change: [#22057] Reorder Time Twister’s scenarios and adjust their difficulty classification.
- Change: [#22173] Patrol path selection is visible over existing patrol paths.
- Change: [#22196] Make track navigation buttons holdable.
- Change: [#22227] [Plugin] Ride prices are now constrained for plugins as well.
- Fix: [#13234] Vehicle weight sometimes wrong after using Remove All Guests cheat.
- Fix: [#13294] Map corners are cut off in some directions (original bug).
- Fix: [#14630] Non-ASCII thousands and decimal separators not processed correctly.
- Fix: [#21496] Some RCT1 scenery is hidden after saving and reloading.
- Fix: [#21533] Support glitches on Hybrid Coaster.
- Fix: [#21974] No reason specified when attempting to place benches, lamps, or bins on path with no unconnected edges (original bug).
- Fix: [#21987] [Plugin] API cannot handle negative removal prices.
- Fix: [#22008] Uninverted Lay-down roller coaster uses the wrong support type.
- Fix: [#22012] [Plugin] Images on ImgButton widgets cannot be updated.
- Fix: [#22121] Some news items in the “Recent Messages” window have the wrong text colour.
- Fix: [#22152] [Plugin] Negative signed integers are truncated.
- Fix: [#22161] Using arrow keys in textboxes crashes the game.
- Fix: [#22174] Cheats are reset when starting a server.
- Fix: [#22185] Intensity and nausea are incorrectly sorted in the rides list after ratings invalidation.
- Fix: [#22226] Red traffic light shows incorrect sprite when pressed.
- Fix: [objects#323] Incorrect wall boundaries on large WW/TT scenery objects.
- Fix: [objects#331] Incorrect hover car capacity string.
- Fix: [objects#334] Incorrect school bus capacity string.
- Fix: [objects#337] Swan Boats use an incorrect third remap colour (original bug).
CorySanin added a commit to CorySanin/OpenRCT2 that referenced this pull request Feb 3, 2025
Release v0.4.12

- Feature: [OpenRCT2#622] Add option to align the top toolbar buttons horizontally centred (off by default).
- Feature: [OpenRCT2#20263] Ability to increase the size of the map in the (0, 0) direction.
- Feature: [OpenRCT2#21714] [Plugin] Costume assignment is now tailored to each staff type.
- Feature: [OpenRCT2#21853] Enlarged UI mode.
- Feature: [OpenRCT2#21893, OpenRCT2#22065] On launch, the game now indicates what system is being initialised.
- Feature: [OpenRCT2#21913] [Plugin] Allow precise and safe control of peep animations.
- Feature: [OpenRCT2#22046] [Plugin] Add interface for crashed vehicle particle.
- Feature: [OpenRCT2#22085] [Plugin] The result of actions that create banners now includes the bannerIndex.
- Feature: [OpenRCT2#22087] [Plugin] Expose guests’ favourite rides to the plugin API.
- Feature: [OpenRCT2#22090] [Plugin] Allow writing of paused state in non-networked settings.
- Feature: [OpenRCT2#22140] Add option to automatically close dropdown menus if Enlarged UI is enabled.
- Feature: [OpenRCT2#22150] [Plugin] Expose monthly expenditure history to the plugin API.
- Feature: [OpenRCT2#22210] [Plugin] Peeps can now be made stationary or completely frozen.
- Feature: [OpenRCT2#22210] [Plugin] The direction in which a peep is facing can now be manipulated.
- Improved: [OpenRCT2#19870] Allow using new colours in UI themes.
- Improved: [OpenRCT2#21774] The Alpine Coaster now supports using the alternative colour schemes.
- Improved: [OpenRCT2#21853] Dropdowns now automatically use multiple columns if they are too tall for the screen.
- Improved: [OpenRCT2#21981] Rendering performance of the map window has been improved considerably.
- Improved: [OpenRCT2#21981] The map window now defaults to showing as much of the map as fits the screen.
- Improved: [OpenRCT2#21983] Taking a screenshot now shows a message again, closing when taking another.
- Improved: [OpenRCT2#22026] The options window now stays centred when window scaling is changed.
- Improved: [OpenRCT2#22060] [Plugin] The scroll wheel can now be used to modify spinner widget values in custom/script windows.
- Improved: [OpenRCT2#22065] Joining a network game now indicates progress using coaster trains.
- Improved: [OpenRCT2#22075] [Plugin] Plugins can now use G1 Icons.
- Improved: [OpenRCT2#22084] The game now temporarily pauses while the load/save window is open.
- Improved: [OpenRCT2#22217] See-through items are ignored again in viewport/pointer interaction.
- Improved: [objects#238] Add preview image for invisible queue.
- Improved: [objects#329] Add RCT1AA lay-down coaster trains (for import only).
- Change: [OpenRCT2#7248] Small mini-maps are now centred in the map window.
- Change: [OpenRCT2#20240] Heavy snow and blizzards now make guests buy and use umbrellas.
- Change: [OpenRCT2#21043] The new music styles are no longer added to old parks automatically.
- Change: [OpenRCT2#21214] Wacky Worlds and Time Twister’s scenario names now match their park names.
- Change: [OpenRCT2#21991] UI themes JSON now use colour names and a translucency bool, instead of a number (old themes still work).
- Change: [OpenRCT2#22057] Reorder Time Twister’s scenarios and adjust their difficulty classification.
- Change: [OpenRCT2#22173] Patrol path selection is visible over existing patrol paths.
- Change: [OpenRCT2#22196] Make track navigation buttons holdable.
- Change: [OpenRCT2#22227] [Plugin] Ride prices are now constrained for plugins as well.
- Fix: [OpenRCT2#13234] Vehicle weight sometimes wrong after using Remove All Guests cheat.
- Fix: [OpenRCT2#13294] Map corners are cut off in some directions (original bug).
- Fix: [OpenRCT2#14630] Non-ASCII thousands and decimal separators not processed correctly.
- Fix: [OpenRCT2#21496] Some RCT1 scenery is hidden after saving and reloading.
- Fix: [OpenRCT2#21533] Support glitches on Hybrid Coaster.
- Fix: [OpenRCT2#21974] No reason specified when attempting to place benches, lamps, or bins on path with no unconnected edges (original bug).
- Fix: [OpenRCT2#21987] [Plugin] API cannot handle negative removal prices.
- Fix: [OpenRCT2#22008] Uninverted Lay-down roller coaster uses the wrong support type.
- Fix: [OpenRCT2#22012] [Plugin] Images on ImgButton widgets cannot be updated.
- Fix: [OpenRCT2#22121] Some news items in the “Recent Messages” window have the wrong text colour.
- Fix: [OpenRCT2#22152] [Plugin] Negative signed integers are truncated.
- Fix: [OpenRCT2#22161] Using arrow keys in textboxes crashes the game.
- Fix: [OpenRCT2#22174] Cheats are reset when starting a server.
- Fix: [OpenRCT2#22185] Intensity and nausea are incorrectly sorted in the rides list after ratings invalidation.
- Fix: [OpenRCT2#22226] Red traffic light shows incorrect sprite when pressed.
- Fix: [objects#323] Incorrect wall boundaries on large WW/TT scenery objects.
- Fix: [objects#331] Incorrect hover car capacity string.
- Fix: [objects#334] Incorrect school bus capacity string.
- Fix: [objects#337] Swan Boats use an incorrect third remap colour (original bug).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants