IRC logs for #openttd on OFTC at 2023-05-02
โด go to previous day
01:58:57 *** Wormnest has quit IRC (Quit: Leaving)
02:14:25 *** debdog has quit IRC (Ping timeout: 480 seconds)
04:10:35 *** _aD has quit IRC (Quit: leaving)
06:28:53 <petern> Oh what is this rabbit hole I've stepped into now...
06:38:35 <pickpacket> is the old image file the correct one?
06:38:46 <pickpacket> I don't remember what the ship looks like
06:40:46 <pickpacket> The same image file is used for both the MPS tanker and the later CS tanker
07:16:57 <andythenorth> should I be making test grf yet? ๐
07:19:42 <pickpacket> andythenorth: what is it you want to test?
07:20:50 <pickpacket> improved it even further this morning, but I don't have a screenshot of it
07:21:01 <LordAro> pickpacket: wiki is a wiki, feel free to edit :)
07:21:19 <pickpacket> LordAro: the media file is in the git repo :)
07:21:23 <LordAro> (by means other than actually fiddling with the git repo)
07:21:34 <LordAro> just pull the old image out and replace the broken one
07:22:03 <pickpacket> not sure if the old is the correct one either. It uses the same for the MPS and CS tankers
07:22:23 <LordAro> it's the same for cargo ships
07:22:31 <pickpacket> what do you mean to pull the old image out?
07:22:47 <pickpacket> link to the previos commit from the wiki?
07:23:25 <LordAro> the git repo is purely a storage mechanism, don't think of it as a git repo
07:23:37 <pickpacket> wouldn't it be better to revert the commit, though?
07:23:53 <LordAro> if it were actually a git repo, then yes
07:24:12 <pickpacket> more like an ftp then
07:24:36 <LordAro> and the very very occasional ability to make bulk updates :)
07:28:43 <andythenorth> so I could make a dice icon and insert it as a font glyph?
07:28:48 <andythenorth> probably would look very bad
07:44:29 <petern> andythenorth: Yes, it was basically waiting for you
07:45:16 <andythenorth> got distracted by variants ๐
07:45:33 <andythenorth> wondering if parent text colour should vary from child text colour ๐
07:48:03 <petern> Uh, well I guess I don't have to do that now.
07:48:46 <andythenorth> seemed the quickest way to fetch it locally
07:49:08 <LordAro> andythenorth: CI failures you need to fix :p
07:50:09 <petern> Gotta have two spaces eh?
07:50:46 <petern> Alternatively, gotta wonder why I did 64000 in hex instead of just 64000. Hmm.
08:11:51 <andythenorth> oh this is new ๐
08:12:56 <andythenorth> lol filtered buy menu is quite transformative ๐
08:14:04 <andythenorth> searches description also ๐
08:14:23 <andythenorth> search UI widget might need some love
08:18:47 <LordAro> hmm, is there no way of uploading images within the wiki itself?
08:19:28 <axet> At least I have to have push permissions.
08:20:10 <axet> BTW I invent queue depots and always in/out queue depots!
08:20:50 <petern> What's an intinite queue?
08:20:58 <axet> game does not allows trains to enter/exit depots simulatinsusly
08:21:25 <axet> helps when you have A LOT of trains
08:21:57 <petern> That's probably an infinite queue.
08:22:50 <petern> wiki does support image upload.
08:24:47 *** D-HUND is now known as debdog
08:25:00 <petern> No idea, but I see commits with images in them.
08:26:17 <axet> people edit git directly not using wiki
08:27:23 <petern> All the commits are from the librarian, not each user. The author is set to the user though.
08:38:02 <axet> not working: 1) first is saying "Edit Conflict Detected" 2) second "There is currently no file with that name."
08:40:51 <petern> Also try optimizing images before upload ๐
08:41:09 <axet> sure. tell me what to do
08:41:16 <petern> Doesn't matter now but.
09:34:14 <axet> pickpacket works fine. try refresh your page :D
09:35:33 <pickpacket> tried a bunch of times :(
09:38:36 <pickpacket> still seeing the train car, both in private window and other browser
09:40:21 <axet> wiki.openttd.org. 237 IN A 188.114.99.224
09:40:21 <axet> wiki.openttd.org. 237 IN A 188.114.98.224
09:41:33 <axet> two servers for wiki. which one you are using?
09:44:02 <pickpacket> I have completely different IPs...
09:45:00 <pickpacket> getent hosts wiki.openttd.org >> 172.67.71.240, 104.26.9.176, 104.26.8.176
09:45:18 <pickpacket> the page works from my phone, which is on another network
09:45:27 <axet> dig @8.8.8.8 wiki.openttd.org
09:45:30 <pickpacket> maybe some caching going on over VPN
09:45:53 <axet> no one caching wiki pages
09:46:18 <pickpacket> dig gives me the same three IPs
09:47:29 <pickpacket> 172.67.71.240, 104.26.9.176, 104.26.8.176
09:47:47 <axet> i mean did you dig server 8.8.8.8?
09:47:52 <axet> and got different result?
09:47:55 <TrueBrain> pickpacket: replacing an image takes up to 1 hour to show up for everyone, depending if someone fetched that image recently
09:48:10 <TrueBrain> images are cached locally to your area
09:59:14 <petern> Nah he's not Canadian.
10:13:27 <TrueBrain> pickpacket: yes, ofc with a CDN ๐
10:26:43 <pickpacket> TrueBrain: I was surprised that thereโs enough load on the server that we need a CDN
10:27:58 <TrueBrain> load or not, that is not really relevant. It is about user experience. Fetching pages quickly makes for happy users. Hence: CDNs
10:33:31 <TrueBrain> (but I also think you are heavily underestimating the size of OpenTTD :P)
10:43:35 <petern> It's just us, here, right?
10:46:28 <TrueBrain> and so are the 1M+ Steam accounts that installed the game ๐
10:52:00 *** dale has quit IRC (Ping timeout: 480 seconds)
10:55:29 <axet> proprietary measurement tool isn't a tool
10:55:49 *** WormnestAndroid has quit IRC (Remote host closed the connection)
10:55:54 *** WormnestAndroid has joined #openttd
11:11:09 <TallTyler> andythenorth: Suggestions welcome, that PR was open for months with no comments but better late than never ๐
11:37:17 <andythenorth> ship, improve later
11:37:32 <andythenorth> also I fixed my build, so I can test PRs again ๐
11:38:00 <petern> 1) adding a panel and padding around the editbox
11:38:00 <petern> 2) playing around with colours, in this case pale green means filter the list, could be standardized across windows.
11:38:42 <andythenorth> restoring the bezel helps the window not look discontinuous
11:38:54 <andythenorth> also that backspace icon ๐
11:39:06 <andythenorth> we give more prominence to 'clear' than to labelling the search widget ๐
11:39:26 <petern> Clear is built in to the editbox. A label isn't.
11:39:51 <petern> Does "Filter:" add anything?
11:39:55 <andythenorth> do we have a magnifying glass icon?
11:40:10 <petern> Yes but they're large with + and - in them :p
11:42:44 <petern> If only there was a symbol for that giant button ๐
12:02:57 * petern tries shuffling things around.
12:03:50 <LordAro> i thought we already got rid of the filter strings
12:04:24 <petern> You mean the literal "Filter:"?
12:04:34 <glx[d]> I think a match case symbol should exist (VS uses one)
12:05:29 <TallTyler> I like the panel padding, not sure about the green
12:06:16 <JGR> Is there any use case for explicitly case sensitive matching?
12:07:10 <petern> Apparently enough of a case to exist on the sign list.
12:17:27 <pickpacket> TrueBrain: I was only thinking about the wiki, but your argument is sound ๐
12:17:48 <pickpacket> Itโs amazing how popular the game is
12:17:56 <glx[d]> next step would be regexp support for filters ๐
12:21:30 <TrueBrain> pickpacket: also shocking how many people visit the wiki; too bad it isn't really maintained all that much
12:22:05 <petern> LordAro: , nope, don't see that being removed (and then accidentally readded)
12:22:37 <petern> I did wonder if interface-scaling had reintroduced the widgets or something, but no.
12:22:40 <petern> And the strings are still there ๐
12:24:20 <glx[d]> "filter" could be replaced with an icon
12:25:35 <pickpacket> TrueBrain: well... I have made a couple of edits on it since I started playing :) If there was just a handful of players like me who went to the wiki time and again to check stuff but also updated it if they found conflicting info somewhere and looked it up, then the wiki would be pretty well maintained
12:28:05 <pickpacket> I don't recognise them
12:29:18 <glx[d]> oil tanker feels wrong though ๐
12:29:57 <LordAro> petern: maybe i'm thinking of other windows
12:29:59 <petern> Yeah that's not default.
12:30:07 <LordAro> seems like we should be consistent though
12:31:09 <petern> Well that is the problematic one that pickpacket pointed out this morning.
12:35:45 <glx[d]> it's been fixed, just need to wait I guess
12:36:13 <petern> That was mentioned earlier too ๐
12:36:23 *** ChanServ sets mode: +v tokai
12:37:04 <glx[d]> lol ctrl-F5 was enough
12:42:29 <pickpacket> I think it's just the hovercraft that looks a bit odd to me.
12:56:11 <pickpacket> I really don't feel like working right now
12:56:53 <pickpacket> luckily our co-loc datacentre has downed all our connections, so I can legitimately say I can't do anything :D
13:03:38 <andythenorth> cheese on toast then?
13:06:13 <pickpacket> andythenorth: already had lunch
13:06:37 * andythenorth eating cheese on toast
13:07:15 <pickpacket> noooooo... it looks like they fixed it again...
13:08:42 <petern> Already had salad and a bit more.
13:08:58 <andythenorth> I have a salad, tastes of onion though, unsuscribe
13:15:46 <pickpacket> In Russia salad has you!
13:44:41 <petern> Hmm, maybe I should resurrect my work with SVG.
13:45:06 <petern> It was mainly experimenting during interface-scaling.
13:56:04 <pickpacket> my gf has decided to quit playing ๐
13:56:30 <pickpacket> it's too addictive for her
13:56:42 <pickpacket> which, to be fair, I find highly amusing
13:58:32 <TallTyler> I think I found the cause of the CodeQL failure: donโt put inline functions into namespaces
13:58:41 <TallTyler> I guess weโll find out ๐
14:10:29 <Brickblock1> Does nml prevent me from making a grf with more than 64 railtypes?
14:11:49 <Brickblock1> ๐ฆ I wanted to but some in if statements so that there was still only 64 loaded at a time
14:14:44 <glx[d]> you can specify the id manually I think
14:15:55 <axet> openttd vegan version? no livestock?
14:15:57 <glx[d]> so you can define multiple railtype with same ID and select the right one with if
14:17:24 <Brickblock1> That seams hard to retrofit so I'll probably split it into two different grfs
14:28:35 *** NGC3982 has joined #openttd
15:14:05 *** HerzogDeXtEr has joined #openttd
15:41:20 <petern> Hopefully it will stop you making 64 railtypes too.
15:41:48 <petern> Actually no, that restriction is for roadtypes.
15:44:58 <petern> Hmm, just got an email from Wiggle saying my order has been dispatched. I received it on Friday...
15:48:12 <FLHerne> at least it's correct then
16:01:10 <petern> Ok.. just been dispatched...
16:04:38 <FLHerne> perhaps their delivery company has started using a time machine
16:16:55 *** ufo-piloot has quit IRC (Quit: you click on fancy icons. i execute code !)
16:17:14 *** ufo-piloot has joined #openttd
16:26:09 <TallTyler> Or youโre about to receive a duplicate order
16:27:47 <TrueBrain> I hope it isn't food from Friday ๐
16:28:35 <LordAro> Wiggle doesn't really do food
16:28:44 <LordAro> other than the haribo
16:29:06 <TrueBrain> dinner time .. assumptions .. etc etc ๐
16:55:21 *** gelignite has joined #openttd
17:08:54 <LordAro> 2023-05-02 17:07:49: Fatal exception of type "Error"
17:09:22 <TrueBrain> so happy we no longer run mediawiki ๐
17:10:49 <LordAro> tbf, it does show more detail if i actually turn error reporting on
17:11:27 <LordAro> unfortunately, that gives me: /wiki/Special:PluggableAuthLogin Error: Call to undefined method MediaWiki\Auth\AuthManager::singleton()
17:13:26 <andythenorth> petern: fancy looking at wagon variants in Horse?
17:13:26 <andythenorth> Problem #1 is basically an overwhelming number of wagon types and colour randomisation, but eh that's unlikely to change ๐
17:13:26 <andythenorth> I've done the best I can with how to organise the rest ๐
17:13:39 <andythenorth> I need some ideas for names, buy menu sprites etc ๐
17:14:04 <andythenorth> "moar dice" ๐
17:19:43 <andythenorth> wondering if goes it revised buy menu ๐
17:24:21 <glx[d]> oh of course it's conflicting
17:30:20 <andythenorth> I might put a set of recoloured-dice into sprite stack layers
17:30:23 <andythenorth> with a recolouring per layer
17:30:32 <andythenorth> but eh, that's a lot of faff, there might be other ideas ๐
17:30:58 <andythenorth> I could put in extra description text about colour schemes as well...but lol at refittable yes ๐
17:56:55 <TrueBrain> `game.settings.resolution` is funny in terms of survey .. lot of entries ๐
18:04:29 <petern> Hmm, I should fix up some more of my tidyups
18:06:10 <TrueBrain> okay, I wrote a simple analyzer .. I just need to make HTML out of it .. ugh, means I have to deal with OpenTTD HTML .. when was andy going to redo the website? ๐
18:06:10 <petern> And then tidy up some more of my fixups
18:06:36 <TrueBrain> anyway, I really don't have enough data to make it useful .. so I guess I finish my survey PR, and after we collected some more data, make it into HTML .. bit hard to do that the other way around ๐
18:07:12 <andythenorth> do you need fake data?
18:07:28 <TrueBrain> no, you gave me more than enough data already ๐
18:07:36 <TrueBrain> at least, the game-time was more than 10s ๐
18:09:34 <TrueBrain> I also added some code to collect infrastructure data, like: how many trains you build etc .. but that is hard to put in a survey-output .. guess it will be in ranges
18:18:54 <pickpacket> Why do we have a directory called "sprites/png/AfricanManagerFaces" in the OpenGFX repo? Where are the rest of the manager faces?
18:28:23 <LordAro> ogfx is not well organised
18:33:59 <pickpacket> where can I find the sprites for other company manager faces?
18:39:23 <DorpsGek> - Update: Translations from eints (by translators)
18:49:37 <petern> Oops, that broke 10739
18:51:50 <Rubidium_> not as bad as the branch I was working on to replace seprintf from gamelog :D
18:53:22 <TrueBrain> right, now let's see about JSON for emscripten ...
18:55:31 <glx[d]> pickpacket: "easier" way is sprite aligner in openttd to get the sprite number, then look in the nml file for this sprite number to get the png
18:56:00 *** esselfe has quit IRC (Quit: rebooting)
18:56:33 <pickpacket> glx[d]: I don't think there's an nml file for the manager faces
18:57:06 <Rubidium_> owh... ah well.. stupid me ;)
18:57:13 <glx[d]> There is, it's a standard baseset sprite so it's in one of the ranges
18:58:26 <glx[d]> Nml files are named from sprite numbers, not actual sprite content
18:59:10 <petern> All the other faces are in there.
19:00:02 *** esselfe has joined #openttd
19:02:10 <Rubidium_> petern: is the next step removing the union from gamelog?
19:02:45 <petern> I don't have that step, but yes, as you can't put a std::string in a union.
19:05:34 <petern> (Well, you can, but it's non-trivial to make sure it allocates and cleans up properly.)
19:05:37 <TrueBrain> hmm, they ported ICU, Freetype and HarfBuzz to Emscripten too ... would that be worth it? Guess it would require us to embed some fonts in the HTML package too, as I doubt freetype can download one from the web or what-ever ๐
19:07:28 <TrueBrain> owh, I only copy the english language file, so this isn't relevant ๐
19:07:29 <Rubidium_> TrueBrain: just wondering... I can only choose English as language in the preview builds. Is that intended? If it is, then ICU/HarfBuzz do not make a lot of sense
19:08:06 <TrueBrain> so many things one could do to improve emscripten .. like loading language files dynamically
19:08:08 <petern> Chicken & egg though, that's probably because there's no font for it ๐
19:08:14 <TrueBrain> as loading all language files is so ... over-the-top
19:09:04 <TrueBrain> hmm, and I could enable network support in emscripten .. as with TURN we can now just offer that on the web too .. that would make it worthy of a "Play Now" button on openttd.org ๐
19:09:27 <TrueBrain> too bad nobody picked up to improve emscripten further .. I was hoping it would awake someone else ๐
19:12:08 <TrueBrain> Rubidium: you added `-t openttd` for the Emscripten CI, but not for any releases; was that intentional?
19:12:18 <andythenorth> would it be feasible to just make the buy menu wider?
19:12:18 <pickpacket> petern: oh! I was naรฏvely expecting them to be in their own file ๐
19:12:19 <TrueBrain> as they now also build `openttd_test`; not a problem, but also wasteful ๐
19:12:22 <TrueBrain> (LTO can be very slow)
19:12:29 <andythenorth> obviously I can drag it and ctrl-click the square
19:14:30 <TallTyler> TrueBrain: Saving still needs implementing. Autosave crashes emscription entirely for me. There's no way cloud saves could be a rabbithole, right? ๐
19:14:46 <TrueBrain> they crash? That is new ... let's see ..
19:14:55 <TallTyler> Although I guess you wouldn't be saving or autosaving if you join a network game...
19:16:08 <Rubidium_> TrueBrain: I think it's worth it to also run the unit tests for the release builds, as they are slightly different in any case and (use to) cover more platforms. The reason I did it emscripten is because it didn't work and because it's not runnning regression tests anyway
19:16:28 <TrueBrain> but the regression tests aren't running for releases
19:16:34 <TrueBrain> only `openttd_test` is build
19:16:52 <Rubidium_> TrueBrain: oh... hmm... my bad I guess
19:17:16 <TrueBrain> I don't really care who's bad it is, I am just wondering what we should do ๐
19:17:24 <TrueBrain> as now it is in a weird in-between .. it builds `openttd_test`, but it doesn't run it ๐
19:17:44 <TrueBrain> (and LTO is just a pain, how slow it is :P)
19:18:33 <Rubidium_> and two LTOs next to eachother probably isn't the best thing either... I guess they're quite the memory hogs
19:18:44 <TrueBrain> owh yeah ... they are ๐
19:19:24 <Rubidium_> if the tests aren't executed, then feel free to disable building also
19:19:33 <TrueBrain> k, I am fiddling there anyway, so will do
19:27:10 *** gelignite has quit IRC (Quit: Stay safe!)
19:47:01 <glx[d]> TrueBrain: they crash depending on save size it seems, mostlyt empty 64x64 are fine
19:48:30 <glx[d]> maybe related to lzma as the issue started around docker image update
19:50:24 <TrueBrain> loading a 200+ MB WASM file is a bit hard on Firefox; lol
19:50:58 <TrueBrain> Chrome deals better with it ๐
19:51:25 <TrueBrain> `caught RuntimeError: memory access out of bounds`
19:51:25 <TrueBrain> ` at LZMASaveFilter::WriteLoop(unsigned char*, unsigned long, lzma_action) (openttd.wasm:0xd57eb5)`
19:55:35 <TrueBrain> updating liblzma didn't help; too bad ๐
19:56:43 <TrueBrain> it is also a lot of memory that is allocated on the stack
19:56:49 <TrueBrain> or it might be an actual bug ๐
19:59:02 <TrueBrain> but not a big fan of throwing 128KB on the stack like that
19:59:24 <TrueBrain> lzma saveload routine
19:59:33 <TrueBrain> kinda wondering if compilers are smart about this or not
20:00:02 <TrueBrain> yeah, when I throw it on the heap it works fine
20:00:12 <TrueBrain> guess OpenTTD grew slightly enough that my stack reservation no longer is sufficient
20:00:42 <petern> `byte buf[MEMORY_CHUNK_SIZE]; // output buffer` that kinda stuff?
20:00:52 <TrueBrain> it is horrible programming tbfh ๐
20:01:11 <petern> `std::vector<byte> buf(MEMORY_CHUNK_SIZE); // output buffer` also horrible bug ๐
20:01:26 <TrueBrain> `static byte *buf = new byte[MEMORY_CHUNK_SIZE]; // output buffer`
20:01:30 <TrueBrain> I think I like your suggestion more ๐
20:01:46 <petern> Yes vector is better than new, imho.
20:02:08 <TrueBrain> well, `static` vs non-static ๐
20:04:35 <petern> LZO has 24KB + a bit more...
20:05:05 <TrueBrain> yeah, but nobody actually cares about LZO ๐ ๐
20:05:17 <petern> Just make buf a member of LZMASaveFilter?
20:05:35 <petern> Like how it's done for ZLib.
20:05:41 <TrueBrain> honestly, this needs a better look .. but for now, I want to fix this bug ๐
20:05:49 <TrueBrain> ZLib also does a stack allocation
20:06:06 <petern> Oh right, so that way doesn't work either ๐
20:06:31 <TrueBrain> MemoryDumper also does ..... something
20:06:44 <TrueBrain> ZLib loader does use a member, yes
20:06:47 <TrueBrain> like .. this is so random ๐
20:07:21 <TrueBrain> all loaders do it better than all savers ..
20:08:24 <TrueBrain> honestly, a vector is better .. the other solution leaves 128KB reserved in memory while it is rarely used
20:08:44 <petern> Is Write() entered multiple times during a save or just once?
20:09:28 <petern> Multiple times, put the vector as a member, once, just a local variable.
20:11:56 <petern> Shall I just make a PR or are you doing it?
20:12:19 <TrueBrain> I am fixing this crap
20:14:35 <TrueBrain> petern: "it depends"; we make chunks out of it too, which we send to the compression
20:14:40 <TrueBrain> so it depends on map-size
20:16:48 <petern> Yeah, best as a member variable so it doesn't need to keep reallocating.
20:16:58 <TrueBrain> yeah .. just so wasteful!
20:17:22 <TrueBrain> the different loaders/savers
20:17:27 <TrueBrain> they are all staticly allocated ๐
20:17:49 <TrueBrain> `static const SaveLoadFormat _saveload_formats`
20:18:09 <TrueBrain> okay ... so that fixes TallTyler 's bug
20:18:20 <TrueBrain> now .. https calls from emscripten I guess .. let me PR these things first
20:18:38 <petern> That table has a function to create the instance no?
20:18:44 <JGR> CreateSaveFilter/CreateLoadFilter are where the actual constructors are, they are not allocated statically
20:18:46 <petern> It's deleted once done.
20:19:14 <TrueBrain> JGR: ah, yes, you are right. Well, that saves 4x 128KB!
20:19:18 <TrueBrain> such importance ๐
20:20:25 <petern> That also means using a byte array member instead of a vector is okay too.
20:21:25 <petern> So just zlib and lzma need fixing up.
20:26:19 *** axet has quit IRC (Quit: Leaving.)
20:27:11 <TrueBrain> updated nlohmann-json branch with emscripten support .. so now I can focus on silly https support ๐
20:27:39 *** lobstarooo has joined #openttd
20:29:22 <petern> fwrite_byte is an interesting name choice too but fine ๐
20:30:00 <TrueBrain> byte? Did I really write byte?
20:30:34 <TrueBrain> too many things at once it seems ๐
20:35:39 <TrueBrain> too quick .. too slow .. on average we are fine ๐
20:36:04 <TrueBrain> owh, right, yes, emscripten and https ... I tried that once. It was a nightmare ๐
20:36:36 <TrueBrain> `Note: This currently only works in Firefox as it uses โmoz-chunked-arraybufferโ.`
20:36:41 <TrueBrain> I forgot about that lovely remark ๐
20:41:52 *** lobstarooo has quit IRC (Ping timeout: 480 seconds)
20:45:24 <TrueBrain> yeah, that hasn't changed ... so no survey results from emscripten I guess ..
20:47:29 <TrueBrain> next up, in-game GUIs ... brrrr ... well, something for another day ๐
20:54:29 <petern> `'initializing': conversion from 'size_t' to 'int', possible loss of data`
20:54:34 <petern> Ah, scrollbars are not size_t yet ๐
20:56:03 <JGR> I'm not sure that I would want to use a scrollbar with more than 2^31 items ๐
20:57:10 <TrueBrain> pff, what is next? 640KB is enough for everyone?
20:58:22 <andythenorth> twice as much as we need
21:01:29 *** nielsm has quit IRC (Ping timeout: 480 seconds)
21:18:59 *** keikoz has quit IRC (Ping timeout: 480 seconds)
21:47:38 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
21:55:02 *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
22:02:41 *** tokai|noir has joined #openttd
22:02:41 *** ChanServ sets mode: +v tokai|noir
22:09:44 *** tokai has quit IRC (Ping timeout: 480 seconds)
22:53:58 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
22:55:41 *** WormnestAndroid has joined #openttd
continue to next day โต