IRC logs for #openttd on OFTC at 2025-06-02
            
00:02:00 *** Compu has quit IRC ()
00:06:22 <DorpsGek> [OpenTTD/OpenTTD] cmcaine commented on discussion #12371: Backport multi-cargo ships from JGRPP? https://github.com/OpenTTD/OpenTTD/discussions/12371
00:21:50 *** Flygon has quit IRC (Read error: Connection reset by peer)
00:34:38 *** Compu has joined #openttd
00:39:31 *** ipravd_ has quit IRC (Ping timeout: 480 seconds)
00:56:15 *** Compu has quit IRC (Quit: https://www.youtube.com/watch?v=5FjWe31S_0g)
01:43:26 *** Wormnest_ has quit IRC (Quit: Leaving)
02:19:16 *** ipravd_ has joined #openttd
02:42:49 *** gnu_jj_ has joined #openttd
02:46:06 *** gnu_jj has quit IRC (Ping timeout: 480 seconds)
03:02:29 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
03:02:30 *** WormnestAndroid has joined #openttd
03:02:53 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
03:02:55 *** WormnestAndroid has joined #openttd
03:03:18 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
03:03:19 *** WormnestAndroid has joined #openttd
03:19:52 *** D-HUND has joined #openttd
03:23:24 *** debdog has quit IRC (Ping timeout: 480 seconds)
04:08:49 *** keikoz has joined #openttd
04:43:31 <DorpsGek> [OpenTTD/OpenTTD] eints-sync[bot] pushed 1 commits to master https://github.com/OpenTTD/OpenTTD/commit/6d0dd90e20f5017a6831b2cfcf933764a64e05c2
04:43:32 <DorpsGek> - Update: Translations from eints (by translators)
05:28:31 <DorpsGek> [OpenTTD/OpenTTD] Release workflow was not successful https://github.com/OpenTTD/OpenTTD/actions/runs/15384314224
05:41:42 <pickpacket> whaaaa.... I started a new company -- "Unnamed" -- and built a depot. And the company became renamed to "Bigwig & Co"
05:41:48 <pickpacket> the hell...?
05:44:16 <pickpacket> peter1138[d]: I have a company which has been in the red for almost two years now without becoming bankrupt
05:52:46 *** ipravd_ has quit IRC (Ping timeout: 480 seconds)
06:12:43 <pickpacket> three full years now
06:13:45 <pickpacket> I left yesterday's game overnight and this morning all companies were gone so apparently they *do* go bankrupt eventually. Just not in 9 months
06:45:01 *** greeter has quit IRC (Quit: ZNC - http://znc.in)
06:45:05 *** Wolf01 has joined #openttd
07:01:04 *** greeter has joined #openttd
07:19:18 <DorpsGek> [OpenTTD/survey-web] survey-summary[bot] pushed 1 commits to main https://github.com/OpenTTD/survey-web/commit/c7a1c4af845f6deb9aa52cf5bf13522bf0707a71
07:19:19 <DorpsGek> - Add: summary for week 22 of 2025 (by OpenTTD Survey)
07:34:38 *** WormnestAndroid has quit IRC (Remote host closed the connection)
07:34:40 *** WormnestAndroid has joined #openttd
08:16:14 *** mindlesstux has quit IRC (Quit: The Lounge - https://thelounge.chat)
08:17:11 *** mindlesstux has joined #openttd
08:19:26 <xarick> hi
08:34:36 <_jgr_> Thinking more about the script list situation, perhaps the more fundamental problem is that its memory cost is excluded from the script memory tracking and allocation limit entirely
08:36:39 <_jgr_> Charging a nominal, constant number of bytes per item (e.g. 64, which is less than the actual cost with the current implementation) could discourage/block excessive use
08:54:40 *** Flygon has joined #openttd
09:17:07 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379026031176056832/image.png?ex=683ebd92&is=683d6c12&hm=4840dae510cb80e5ec6a77f8f878afee34eb6b1fd75455f899347d53d447dba9&
09:51:00 *** gnu_jj has joined #openttd
09:54:16 *** gnu_jj_ has quit IRC (Ping timeout: 480 seconds)
09:58:53 <DorpsGek> [OpenTTD/OpenTTD] PeterN commented on pull request #14321: Add: Include history of cargo delivered to industries, and stockpiled, with graphs. https://github.com/OpenTTD/OpenTTD/pull/14321#issuecomment-2929782973
10:00:40 <peter1138[d]> https://cdn.discordapp.com/attachments/1008473233844097104/1379036990862917643/image.png?ex=683ec7c7&is=683d7647&hm=e5c0c76f7d6422e5e8cb79094ebb2eba8fc7e9acf0ffee858dd2a977811f6e10&
10:00:40 <peter1138[d]> https://cdn.discordapp.com/attachments/1008473233844097104/1379036991248662569/image.png?ex=683ec7c7&is=683d7647&hm=2a61fbb15550974a1410cc9a769382802e93b227c240152f1276ae9f495349ae&
10:00:40 <peter1138[d]> Utterly wrong, vs a bit better.
10:01:59 <peter1138[d]> Alternative correctness...
10:02:02 <peter1138[d]> https://cdn.discordapp.com/attachments/1008473233844097104/1379037338344099897/image.png?ex=683ec81a&is=683d769a&hm=4ff6a8b3fdba941a22f7ff5db8892109aab323153dff616173130016c5078703&
11:32:16 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379060045471285270/image.png?ex=683edd40&is=683d8bc0&hm=53547b9041be6ceff457e4402f0c477da474c143f0ef2689719adaef6ec78b16&
11:32:16 <xarick> hunting for some assert that may not happen
11:39:24 <DorpsGek> [OpenTTD/OpenTTD] 2TallTyler commented on pull request #14320: Fix: Prevent duplicate train reversal when already reversing https://github.com/OpenTTD/OpenTTD/pull/14320#pullrequestreview-2887989779
11:41:43 <DorpsGek> [OpenTTD/OpenTTD] PeterN commented on pull request #14320: Fix: Prevent duplicate train reversal when already reversing https://github.com/OpenTTD/OpenTTD/pull/14320#issuecomment-2930232388
11:46:26 <DorpsGek> [OpenTTD/OpenTTD] 2TallTyler approved pull request #14309: Codechange: De-duplicate common parts of graph windows with cargo legend. https://github.com/OpenTTD/OpenTTD/pull/14309#pullrequestreview-2888021838
11:47:36 <LordAro> anyone else get AI vibes from #14320?
11:48:01 <peter1138[d]> A bit of that too.
11:48:03 <LordAro> not that an AI would add unnecessary newlines or commented out code
11:48:15 <LordAro> could just be the description
11:50:19 <talltyler> The userโ€™s other repos have suspiciously-nice repos for throwaway practice project (chess game with one cpp file, etc), which does suggest AI to me.
11:55:28 <talltyler> Er, suspiciously-nice Readme* files
11:55:42 <talltyler> No real person writes using emojis
12:03:04 *** tabytac has joined #openttd
12:03:04 <tabytac> talltyler: what! ๐Ÿ˜ฑ
12:14:05 <peter1138[d]> Well.
12:26:28 <xarick> No asserts so far
12:28:03 <xarick> I'm so tempted to PR
12:29:50 <xarick> maybe I should rename `AddItemUnsafe` to some better name:
12:29:50 <xarick> `AddItemUnchecked`
12:29:50 <xarick> `AddUncheckedItem`
12:29:50 <xarick> `UncheckAddItem`
12:30:02 <xarick> any suggestion
12:34:46 <fairyflossy> Well it depends, is it an unsafe/unchecked method of adding, or is the item unsafe/unchecked
12:35:44 <fairyflossy> AddItemUnchecked/Uncheck(ed)AddItem to me, as someone with 0 familiarity with the code, implies the Unchecked-ness is to do with the action. AddUncheckedItem implies its to do with the item
12:36:25 <_glx_> it doesn't provide real benefit (a gain of 1s on a 5+s call just proves the script should have been killed earlier)
12:37:48 <xarick> but it's on 24+ lists, they have to add up
12:38:37 <xarick> 1 us here, 1 us there
12:39:01 <_glx_> in normal usage it won't matter
12:43:09 <xarick> hmm
12:50:15 <xarick> I wanted an assert to happen, I'm intrigued what's going to happen to the list
12:51:54 <peter1138[d]> Such vibe coding.
12:53:16 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379080427163353178/image.png?ex=683ef03b&is=683d9ebb&hm=ddc8956cde5c9ec2617ec12f8070bf7334f54dfc85e150f1a92736bf1f35ec1f&
12:53:16 <xarick> let's go
12:55:48 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379081064080736386/image.png?ex=683ef0d3&is=683d9f53&hm=28d08c4836c5444b9d5f66e1e3bf5d7c4300398b062148ae9cf16b9e360549b0&
12:55:48 <xarick> at least I prove the assert works
13:17:32 <xarick> nothing bad happens
13:17:40 <xarick> value is 0
13:17:57 <peter1138[d]> Is it not home time yet? ๐Ÿ˜ฆ
13:18:44 <xarick> buckets for item x with value 0 remains unchanged
13:20:06 <xarick> bucket is a map
13:20:43 <xarick> items is a map too
13:21:22 <xarick> interesting that an AIList takes two std::map's
13:38:13 <xarick> it's been 1 hour already
13:38:23 <xarick> what am I doing with my time
13:40:36 *** Flygon has quit IRC (Read error: Connection reset by peer)
13:45:06 <_glx_> oh SQOpsLimiter has no effect when the valuator is a native closure
13:46:28 <xarick> Unsure if i keep the assert... apparently nothing really bad happens
13:46:56 <xarick> only because the value is the same
13:58:35 *** reldred has quit IRC (Quit: User went offline on Discord a while ago)
13:59:11 <xarick> Unverified?
13:59:38 <xarick> ``` /**
13:59:38 <xarick> * Adds a single item to the list without verifying its existence.
13:59:38 <xarick> * @param item The item to add.
13:59:38 <xarick> * @note For performance reasons, use this method only when certain that the item is not already in the list.
13:59:38 <xarick> * @api -all
13:59:39 <xarick> */
13:59:39 <xarick> void AddItemUnsafe(SQInteger item);```
14:02:12 <xarick> AddUniqueItem ?
14:02:27 <xarick> but... not really
14:02:45 <_glx_> don't PR that anyway
14:02:59 <xarick> okay, it's for me
14:39:00 <DorpsGek> [OpenTTD/OpenTTD] ArtiomGusev commented on pull request #14320: Fix: Prevent duplicate train reversal when already reversing https://github.com/OpenTTD/OpenTTD/pull/14320#issuecomment-2931043307
15:04:40 <DorpsGek> [OpenTTD/OpenTTD] glx22 opened pull request #14322: Fix: [Script] SQOpsLimiter had no effect for native valuator/filter https://github.com/OpenTTD/OpenTTD/pull/14322
15:11:36 *** Smedles_ has joined #openttd
15:12:44 *** Wormnest has joined #openttd
15:14:22 <xarick> is that going to halt AddRectangle the whole map?
15:14:37 *** Smedles__ has joined #openttd
15:14:48 *** Smedles has quit IRC (Ping timeout: 480 seconds)
15:16:53 <xarick> guess not
15:17:52 <_glx_> no it's only for where SQOpsLimiter is used
15:19:58 <_glx_> I noticed it didn't work when doing silly tests (like valuating a list of over 200k items)
15:20:52 <_glx_> each valuation costing at least 5 ops it should have triggered but it didn't
15:21:11 <_glx_> now it does
15:21:58 *** Smedles_ has quit IRC (Ping timeout: 480 seconds)
15:22:18 <xarick> hmm ๐Ÿ™‚
15:22:23 <xarick> more dead AIs
15:23:07 <xarick> I have no good solution for AddRectangle
15:23:44 <xarick> I didn't want to turn it into a nap
15:23:59 <peter1138[d]> Is that "don't add the whole map"?
15:25:12 <xarick> I tried adding tiles one by one in squirrel
15:25:48 <xarick> it smooths out the operation, but with 10k ops the AI is just not doing anything for months
15:26:32 <_jgr_> Poorly written AIs effectively creating a denial of service of the actual game should really be killed either way
15:44:32 <_glx_> anyway if your list has more than 200k items you're doing it wrong
15:47:42 <_glx_> if I'm counting correctly a ScriptVehicleList() for an AI is at most 20k items
15:48:47 <andythenorth> lol
15:48:52 <andythenorth> map reduce, and thread pool
15:49:02 <andythenorth> "desync safe" ๐Ÿ˜›
15:52:13 <xarick> GS can get a list of all vehicles from every company
15:52:26 <_glx_> for GS it can go up to 300k yes
15:53:15 <xarick> and free wagons too
15:57:02 <_glx_> but survey shows games using highest max for each vehicle types are less than 50%
15:57:06 <xarick> one day iron horse will have 300k engines too
15:58:00 <_glx_> max is 64000 for engines
15:58:39 <andythenorth> I'll need to wait a few generations of CPU before I can add 64k vehicles
15:58:55 <_glx_> shared between all active newgrf
16:00:45 <_glx_> so a script needing more than 200k items in a list does silly things
16:08:58 <andythenorth> naptime?
16:10:28 <xarick> I found more places where I can use AddItemUnchecked
16:12:10 <xarick> i could use it in the _set metamethod
16:12:12 <xarick> amazing
16:14:06 <xarick> ScriptList::LoadObject I also assume the AddItem there is also used on empty lists?
16:17:16 <xarick> FindVehiclesWithOrder, unsure
16:27:47 <xarick> probably can use it there too
16:38:17 <xarick> corona AI is a good place to test
16:38:22 <xarick> performance issues
16:40:43 <DorpsGek> [OpenTTD/OpenTTD] PeterN merged pull request #14309: Codechange: De-duplicate common parts of graph windows with cargo legend. https://github.com/OpenTTD/OpenTTD/pull/14309
16:42:46 *** Smedles has joined #openttd
16:45:58 *** Smedles__ has quit IRC (Ping timeout: 480 seconds)
16:51:17 *** Smedles_ has joined #openttd
16:53:48 <DorpsGek> [OpenTTD/OpenTTD] PeterN updated pull request #14314: Add: Hover on graph legend to highlight line. https://github.com/OpenTTD/OpenTTD/pull/14314
16:58:27 <peter1138[d]> Okay, what to call a value that's a sum of values to be turned into an average once a month?
16:58:38 *** Smedles has quit IRC (Ping timeout: 480 seconds)
17:09:22 <peter1138[d]> Also, is there a cheap way to get the number of days since the last month event.
17:09:57 <Rubidium> you mean it's the name for a filed that's the sum for the current month and average for past months?
17:10:00 <andythenorth> peter1138[d]: timeseries no?
17:10:11 <peter1138[d]> timeseries no??
17:10:49 *** michi_cc has joined #openttd
17:10:49 <michi_cc> Accumulation?
17:11:06 <andythenorth> cumulative sum of timeseries?
17:12:55 <peter1138[d]> accumulated fits best.
17:13:20 <peter1138[d]> It was off my radar because I'd tried a method that used an accumulator, but that was not satisfactory.
17:15:08 <peter1138[d]> Having to store (and save) both the average and the accumulator, which only works for a fixed number of samples per month, turns out just be more complex than just storing the accumulated total and dividing it at the end of the month.
17:57:56 <DorpsGek> [OpenTTD/OpenTTD] 2TallTyler commented on pull request #14314: Add: Hover on graph legend to highlight line. https://github.com/OpenTTD/OpenTTD/pull/14314#pullrequestreview-2889415135
18:02:00 <peter1138[d]> Hmm, probably this accumulated average will never go near uint16_t, let alone overflow.
18:03:26 *** WormnestAndroid has quit IRC (Remote host closed the connection)
18:03:34 *** WormnestAndroid has joined #openttd
18:06:03 *** WormnestAndroid has quit IRC (Remote host closed the connection)
18:06:04 *** WormnestAndroid has joined #openttd
18:06:28 <DorpsGek> [OpenTTD/OpenTTD] PeterN commented on pull request #14314: Add: Hover on graph legend to highlight line. https://github.com/OpenTTD/OpenTTD/pull/14314#pullrequestreview-2889449867
18:08:05 *** gelignite has joined #openttd
18:25:56 <pickpacket> peter1138[d]: not saying you're wrong, but... Famous last words...
18:26:38 <peter1138[d]> No, I made it uint32_t because the raw value is uint16_t.
18:26:46 <peter1138[d]> But I'm seeing values like... 30 ๐Ÿ™‚
18:28:44 <pickpacket> ๐Ÿ˜‚
18:30:15 <peter1138[d]> Fortunately it's only 1 value (per cargo, per industry), and the actual monthly average is a uint16_t.
18:40:13 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379167741348413541/image.png?ex=683f418d&is=683df00d&hm=fd1b16af84be398c5b13f1c85dc1a967f0ee0fe01c109a5dc29beaa677989da4&
18:40:13 <xarick> How do I rename on both places?
18:44:13 <xarick> https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/renaming-a-branch too much work
18:48:44 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
18:51:56 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
18:52:48 *** WormnestAndroid has joined #openttd
18:54:01 <xarick> it's still missing 1 sprite
19:01:11 <DorpsGek> [OpenTTD/OpenTTD] PeterN updated pull request #14314: Add: Hover on graph legend to highlight line. https://github.com/OpenTTD/OpenTTD/pull/14314
19:04:35 <xarick> how do I manage branches that require other branches
19:04:52 <xarick> er, how to explain
19:06:22 <peter1138[d]> Just reference the other PR in the PR description.
19:07:50 <xarick> nvm, I'll figure a way
19:08:21 <LordAro> rebase --update-refs
19:08:42 <peter1138[d]> Oh right, not at PR level ๐Ÿ™‚
19:09:26 <peter1138[d]> Crap. I messed that up ๐Ÿ˜ฎ
19:09:48 <xarick> my `mix` branch is a bunch of cherry-picks from other branches
19:09:54 <xarick> but it's becoming long
19:10:18 <DorpsGek> [OpenTTD/OpenTTD] PeterN updated pull request #14314: Add: Hover on graph legend to highlight line. https://github.com/OpenTTD/OpenTTD/pull/14314
19:10:30 <xarick> becoming harder to maintain
19:11:42 <DorpsGek> [OpenTTD/nml] PeterN merged pull request #377: Add: Support for badge menu vertical ellipsis icon https://github.com/OpenTTD/nml/pull/377
19:12:35 <peter1138[d]> XarickPatchPack?
19:13:26 <LordAro> there is no easy way to maintain such a branch
19:13:45 <xarick> yeh
19:15:55 *** gelignite is now known as Guest17184
19:15:55 *** Guest17184 has quit IRC (Read error: Connection reset by peer)
19:15:58 *** gelignite has joined #openttd
19:16:17 <peter1138[d]> Well, you can just merge things all over the place. But...
19:23:03 *** gelignite has quit IRC (Read error: Connection reset by peer)
19:23:29 *** gelignite has joined #openttd
19:28:33 <xarick> my slow valuate branch exploded in number of commits
19:29:01 <xarick> trying to bring them into mix branch gonna be tough
19:44:24 *** WormnestAndroid has quit IRC (Remote host closed the connection)
19:44:29 *** WormnestAndroid has joined #openttd
20:06:40 *** Flygon has joined #openttd
20:16:26 <xarick> https://gist.github.com/SamuXarick/2e6ac1a15c40859d363626e664660d96
20:20:41 <_zephyris> Thanks for merging the nml update, I don't (think I) have write permissions for nml.
20:23:19 <_glx_> indeed you don't ๐Ÿ™‚
20:26:18 <DorpsGek> [OpenTTD/OpenTTD] zephyris commented on pull request #14314: Add: Hover on graph legend to highlight line. https://github.com/OpenTTD/OpenTTD/pull/14314#issuecomment-2932367293
20:29:42 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
20:30:11 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379195413399343355/image.png?ex=683f5b52&is=683e09d2&hm=0443fe2464b95def90568230e0f9eefc04bed7fa757ea0419b69c75279068e48&
20:30:11 <xarick> my stuff takes 29 KB
20:30:53 <xarick> oh snap... language packs, they can't be together
20:31:06 *** WormnestAndroid has joined #openttd
20:33:43 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379196303036121200/image.png?ex=683f5c26&is=683e0aa6&hm=49c83d794bc88711af2e120cb6f653aa9e443253ea089e5d17b8ca9e37311139&
20:35:25 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379196730800607334/image.png?ex=683f5c8c&is=683e0b0c&hm=66be8b80b3cc49c644719c0e6e1892842533e403f610332846a7fdb8899f3bb0&
20:36:44 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379197064877182987/image.png?ex=683f5cdc&is=683e0b5c&hm=cd9077a737f5d59614a75070366c6feb5a501bed4355d4c7dc7bffc8863cb910&
20:49:26 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379200257069551666/image.png?ex=683f5fd5&is=683e0e55&hm=7d7707936a9b246c59646da5194c55f201191f6efad794034ff2aafafd9aab02&
20:49:26 <xarick> 1 year later
20:50:13 <xarick> some strange stuff happening with the memory usage
20:50:44 <xarick> I expected same usage
20:50:48 <xarick> but k
20:54:16 <peter1138[d]> https://cdn.discordapp.com/attachments/1008473233844097104/1379201475011412098/image.png?ex=683f60f7&is=683e0f77&hm=fdc77f55053378b4a9464e7f88b4eaf76c31e1e5983a1c959b2d981b4eccfcb3&
20:54:16 <peter1138[d]> Some kind of small town.
20:54:40 <peter1138[d]> It is slightly alarming how much the population changes ๐Ÿ™‚
21:01:16 <xarick> 2 years after, master is staying behind
21:01:19 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379203248967123196/image.png?ex=683f629e&is=683e111e&hm=445423a5e2cae0b90dc62a571baac16bd87dc5c3286db5b3df0165991d3f100f&
21:01:40 <xarick> my stuff werks!
21:10:49 *** gelignite has quit IRC ()
21:14:04 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379206459853639800/image.png?ex=683f659c&is=683e141c&hm=e6e24078b576e36d69c7b450818b6501d36cf9ff28e61584ef7becd92027bd62&
21:14:04 <xarick> year 3
21:14:55 <xarick> becoming harder to maintain 1.00x
21:19:50 <xarick> just reached the point max ops are starting to decrease
21:19:57 <xarick> for the coronas
21:28:51 *** keikoz has quit IRC (Ping timeout: 480 seconds)
21:42:28 <xarick> https://cdn.discordapp.com/attachments/1008473233844097104/1379213603894460436/2025-06-02_22-40-57.mp4?ex=683f6c43&is=683e1ac3&hm=32b254302b6d63471d1692f5f330d076f34f54b1ce80653fa12193c3c1158d11&
21:42:28 <xarick> 1 minute sample
21:43:03 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
22:00:58 *** tokai|noir has joined #openttd
22:00:58 *** ChanServ sets mode: +v tokai|noir
22:08:01 *** tokai has quit IRC (Ping timeout: 480 seconds)
22:23:24 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
22:25:52 *** WormnestAndroid has joined #openttd
23:02:52 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
23:03:04 *** WormnestAndroid has joined #openttd
23:08:12 <DorpsGek> [OpenTTD/OpenTTD] glx22 opened pull request #14323: Codechange: Replace ScriptObject::[SG]etAllowDoCommand with ScriptObject::AutoRestoreAllowDoCommand https://github.com/OpenTTD/OpenTTD/pull/14323