IRC logs for #openttd on OFTC at 2025-06-07
โด go to previous day
00:55:20 *** WormnestAndroid has quit IRC (Remote host closed the connection)
00:55:23 *** WormnestAndroid has joined #openttd
01:06:39 *** WormnestAndroid has quit IRC (Remote host closed the connection)
01:06:53 *** WormnestAndroid has joined #openttd
01:28:42 *** WormnestAndroid has quit IRC (Remote host closed the connection)
01:28:44 *** WormnestAndroid has joined #openttd
02:01:09 *** Wormnest has joined #openttd
02:42:25 *** gnu_jj_ has joined #openttd
02:45:59 *** gnu_jj has quit IRC (Ping timeout: 480 seconds)
03:17:39 *** debdog has quit IRC (Ping timeout: 480 seconds)
04:40:14 <DorpsGek> - Update: Translations from eints (by translators)
05:03:05 *** keikoz has quit IRC (Ping timeout: 480 seconds)
05:11:58 *** D-HUND is now known as debdog
05:51:35 *** Flygon has quit IRC (Read error: Connection reset by peer)
05:55:13 <pickpacket> Is it... Saturday?
06:05:11 *** mindlesstux has joined #openttd
06:56:02 <dwfreed> most of the world, except for the west coast of north america (5 more minutes) and further west
07:01:41 *** keikoz has quit IRC (Ping timeout: 480 seconds)
08:12:59 *** keikoz has quit IRC (Ping timeout: 480 seconds)
08:19:20 <andythenorth> my map is too big ๐
08:19:28 <andythenorth> can I remove tiles from the array? ๐
08:35:24 *** keikoz has quit IRC (Ping timeout: 480 seconds)
08:55:18 <peter1138[d]> Hmm, bugs me that this Arturia doesn't have a key-split function.
08:55:53 <peter1138[d]> I want to change the key of the sequence playing in the background while playing other notes on a different channel. Pom te pom.
08:56:09 <peter1138[d]> I suppose the modern way is DAW ๐ฎ
08:57:44 *** keikoz has quit IRC (Ping timeout: 480 seconds)
08:58:46 <peter1138[d]> I should've been getting ready to go out on the bike, but got distracted.
08:59:08 <peter1138[d]> And now it's 1 hour after everyone else started :p
09:00:44 <peter1138[d]> (Also it's supposed to be raining, but it's not really.)
09:01:00 <xarick> is there a more generalized place where could I store the list of free wagons?
09:01:30 <xarick> I was doing it per company, but feels dumb due to the fact there aren't that many free wagons per company
09:02:32 <xarick> where to put 1 list for free wagons for all companies
09:05:23 * andythenorth has no idea about OpenTTD internals
09:05:38 <andythenorth> but generally shared data structures require more maintenance than encapsulation
09:05:47 <andythenorth> so only use them if there's a performance reason
09:06:27 <andythenorth> where are vehicle list(s) stored though? ๐
09:06:53 <peter1138[d]> andythenorth: Usually not.
09:07:28 <peter1138[d]> You're either following a chain (consists), following a bucket (hashes), or just searching through all of them.
09:07:42 <andythenorth> why do we need a free wagons list then?
09:07:52 <peter1138[d]> It's the "searching through all of them" that is slower when you have 15 companies with 20,000 vehicles each.
09:08:22 <peter1138[d]> Basically it boils down to "my stress test is stressing the game", surprise.
09:08:35 <andythenorth> so we add some caching for an extremely niche case?
09:08:56 <peter1138[d]> Because we're not doing it, it'll live in another PR that's never merged.
09:09:05 <andythenorth> so it's a hobby project ๐
09:10:00 <peter1138[d]> Stress testing is good, but improving performance by just gobbling memory with cached list that need to be carefully maintained is less than ideal.
09:10:14 <peter1138[d]> Granted, we do have done it in some places.
09:17:13 <xarick> CountEngine already doing some of the job, maybe i could do something there
09:25:34 <peter1138[d]> It's not group related though.
09:34:10 *** keikoz has quit IRC (Ping timeout: 480 seconds)
09:55:55 <andythenorth> If you have to update free wagon structures every time a train changes in depot, that might not be free
09:56:36 <andythenorth> The net ops over time in a typical game might be higher than without a free wagons cache
09:57:26 <peter1138[d]> "Can a cache be used by multiple things"
09:58:08 <peter1138[d]> A cache that only helps an API call that a particular script uses a few times...
10:03:23 <_jgr_> There already is a vehicle tile hash, it eould seem more straightforward for scripts to just cache where their depots are and look up what is in them as necessary
10:10:59 <xarick> oh... sounds plausible
10:12:12 <xarick> gonna toy with the idea
10:37:13 <sebdg> Hi all, I'm starting to write some openttd ai using tutorials and inspiration from existing ai's, I wonder if there is any way to do interprocess communication or call a web request / socket to discuss with a process outside of openttd ?
10:59:43 <_glx_> But GS can use admin port
11:06:27 <xarick> heh, now I'm iterating all depots hmm :p
11:15:10 <xarick> there are theoretically less depots than vehicles
11:15:43 <xarick> and they're not even train depots
11:36:33 <sebdg> thnxs _glx_ will check that out
11:38:27 <sebdg> if I get it right GS will allow me to establish chat communication from/to the AI players that can then execute/return in-game information and chat back to the outside aicontroller
11:41:09 <_glx_> xarick: But you only need it once, and store it in the AI, as the AI is the one adding/removing depots it can keep the list up to date
11:42:33 <_glx_> Same for free vehicles, they won't appear/disappear without AI doing it
11:42:58 <_glx_> Well of course there can be flooding events
11:45:24 <_glx_> @sebdg no, there's no direct communication between GS and AI, but a protocol using signs exists as a library IIRC
11:48:39 <andythenorth> can AI read the story book?
11:48:47 <andythenorth> possibly should be able to
11:49:46 *** gelignite has joined #openttd
11:50:25 <sebdg> ow... but the AI ight not have chat access :(
11:52:47 <peter1138[d]> That's the admin protocol, unrelated to the AI/GS API.
12:04:56 <andythenorth> was it railtype spec yet? ๐
12:09:17 <peter1138[d]> You mean "purge the so-called standardised railtype scheme"?
12:11:05 <andythenorth> make railtypes great again?
12:13:43 <peter1138[d]> #14284 is not searching for a free wagon.
12:14:26 <xarick> oh, right. but VehicleOnTile anyway
12:16:05 <peter1138[d]> Yes, but it's not searching for a free wagon.
12:20:07 <sebdg> Script Communication Protocol (SCP) using signs to communicate from-to AI and GS and admin port to get this in/out openttd, thanks guys, will dig that deeper
12:26:42 <xarick> what an ugly piece of bad coder
12:28:33 <_glx_> doesn't look like the right location anyway
12:29:31 <_glx_> oh maybe it is, but why all the duplication ?
12:37:40 <xarick> protected, template, typename... complicated words
12:42:00 <andythenorth> some of you folks persuaded me not to put vehicle length into badges, as redundant
12:42:13 <andythenorth> but this might be a special case? ๐
12:43:51 <peter1138[d]> Or fix the preview sprite to make the length clear
12:44:45 <talltyler> Donโt we have a badge for dice now?
12:45:14 <peter1138[d]> Make the die a badge, make a preview sprite a combination of different image slices, with the correct length.
12:45:15 *** reldred has joined #openttd
12:45:15 <reldred> dice badge dice badge
12:45:25 <peter1138[d]> Not sure if the dice made it as "standard"
12:46:55 <peter1138[d]> Nobody has offered any further suggestions or svgs for more default badges.
12:49:10 <reldred> eh, it's a bit horsey
12:49:26 <reldred> dunno if anyone else would use it in their sets.
12:53:25 <peter1138[d]> True, but andy is stuck in the world of everything being 1x, so e.g. his livery badges are pixelly.
13:00:35 <peter1138[d]> Hmm, ah, move the button. That makes sense.
13:02:30 <talltyler> Now I can finally delete my two branches where I tried and failed to implement this feature ๐
13:04:42 <andythenorth> peter1138[d]: I did previously try blending two sprites, but it tended to look....terrible ๐
13:04:57 <peter1138[d]> talltyler: sorry !
13:05:13 <andythenorth> are we doing industry ploppable tiles next? ๐
13:05:22 <peter1138[d]> I think these buttons should now be underneath the road layuout buttons, though?
13:05:23 <talltyler> Perfect button placement, push it! ๐
13:05:30 <peter1138[d]> Those are all "new town" options
13:05:48 <talltyler> Sure, makes sense to me.
13:06:16 <peter1138[d]> Hard to type with a staffie resting on my arm ๐ฎ
13:06:39 <talltyler> Expand town settings
13:09:47 <talltyler> Why are they part of the layout selection?
13:10:23 <talltyler> That can be disabled by a player setting, of course it's always shown in Scenario Editor but it feels odd to have them linked together like that.
13:11:29 <peter1138[d]> I assumed it was scenario-editor dependent ๐ฎ
13:22:20 <andythenorth> when is 15.0? I should maybe finish Horse
13:22:36 <andythenorth> 44 trains to draw ๐
13:26:02 <talltyler> I'm waiting for the preview to build, but maybe you've already checked: the town expansion section is not shown in-game? It looks like the nested widgets are shared, not separately defined for SE.
13:27:03 <peter1138[d]> That's what the OnInit() section deals with. If it's in GM_EDITOR, all the selections are visible. otherwise some are hidden depending on options.
13:27:27 <peter1138[d]> Brickblock1viaGitHub: A good example of why screenshots are useful?
13:27:45 <talltyler> Oh, `SetDisplayedPlane(SZSP_HORIZONTAL)` hodes it while `0` shows it?
13:27:59 <talltyler> I always forget which way around that works ๐
13:28:01 <peter1138[d]> What someone think might be obvious...
13:28:09 <peter1138[d]> If it's a number, it's
13:28:33 <peter1138[d]> If it's a number, it's showing a specific plane. If it's SZSP_* then it's zero-sized, but resizeable in whatever direction.
13:29:14 <talltyler> Gotcha, thanks for the explanation ๐
13:30:16 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
13:38:26 *** WormnestAndroid has joined #openttd
13:43:47 <xarick> i think i put the template in the wrong place
13:54:46 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
13:56:21 *** WormnestAndroid has joined #openttd
14:01:00 <xarick> Your script made an error: couldn't detect real instance of class for non-static call
14:01:33 <xarick> my vehicle lists are borked
14:02:18 <_glx_> it means you are not passing the correct args
14:03:03 <xarick> ah, i removed a `static` now it works
14:03:27 <xarick> `void FindVehiclesAndFreeWagons(ScriptList *list, CompanyPredicate company_pred, DepotPredicate depot_pred, ItemFilter item_filter)`
14:04:02 <xarick> actually nope, doesnt wokr
14:04:17 <_glx_> xarick: basically that means your calling function for an instance but don't give it the instance
14:04:50 <_glx_> ie pushed wrong `_this`
14:05:35 <_glx_> most likely you pushed root table when it should be something else
14:05:59 <xarick> oh, I see, I am using a list, instead of this
14:08:30 <xarick> couldn't detect real instance of class for non-static call :/
14:10:00 <xarick> local in_depot = AIVehicleList(AIVehicle.IsInDepot);
14:10:11 <xarick> print(" InDepot Count(): " + in_depot.Count()); // crashes here
14:10:28 *** WormnestAndroid has quit IRC (Remote host closed the connection)
14:10:57 *** WormnestAndroid has joined #openttd
14:12:12 <_glx_> so constructor somehow failed
14:12:23 <peter1138[d]> Oh, thanks 2TallTyler ๐
14:12:26 <xarick> gonna try this->FindVehiclesAndFreeWagons(
14:14:59 <peter1138[d]> So the industry graph shows monthly data.
14:15:48 <peter1138[d]> "When" I add display of quarterly and yearly data, should it still show monthly values, as an average of the combined period?
14:16:13 <peter1138[d]> Doing that means it's easy to compare old data with current data, as the ranges are the same.
14:18:13 <_glx_> xarick: don't try random thing, but find out why squirrel_helper.hpp:407 is not reached
14:18:57 <_glx_> could be some bug in exporter too
14:20:14 <talltyler> peter1138[d]: It does sound helpful to make it easy to compare data over time. I'm not really sure what you mean by showing monthly values in graphs of quarterly and yearly data. Would the graph be wider, or the monthly ticks be closer together? Or am I misunderstanding?
14:20:17 <peter1138[d]> Presumably no German speakers paly te game ๐
14:20:53 <_glx_> check content `...\generated\script\api\ai\ai_vehiclelist.sq.hpp`
14:21:27 <_glx_> my guess is for some reason `SQAIVehicleList.AddSQAdvancedConstructor(engine);` is not present
14:21:48 <peter1138[d]> talltyler: If Jan = 10, Feb = 11, Mar = 12, then Quarter 1 can be shown as 11, or as 33.
14:22:45 <talltyler> Oh, I see. Should the longer time scales show average or total.
14:23:18 <peter1138[d]> Yeah. Always showing as "per month" makes comparisons easier.
14:23:25 *** sebdg has quit IRC (Quit: Page closed)
14:23:39 <talltyler> I think average, especially in wallclock mode. Converting averages and units sounds annoying. ๐
14:23:41 <peter1138[d]> Also reduces errors, because internally the data is stored as per month anyway.
14:24:01 <peter1138[d]> (To avoid overflow issues)
14:24:17 <talltyler> It will definitely need a "... per month" label somewhere so players understand it's an average and not a total. ๐
14:24:28 <peter1138[d]> Yes, it should be on the y-axis I think.
14:24:49 <peter1138[d]> Because I need to multiple y-axis support, with different labels.
14:25:31 <talltyler> The reversed "minutes ago" x-axis is one of the clunkier things about wallclock mode, but I don't know a better way to handle it. ๐
14:25:54 <talltyler> (Unrelated to your current question but I'm sure you'll be dealing with it soon and maybe cursing me ๐ )
14:26:49 <peter1138[d]> No, I've not needed to touch that.
14:27:14 <peter1138[d]> I just change the steps between 1, 3 and 12 ๐
14:31:14 <andythenorth> so if payment charge has hover
14:31:23 <andythenorth> shall I rebalance FIRS cargo prices? ๐
14:31:55 <andythenorth> some are artificially low, and many more are artificially high
14:32:31 <talltyler> You've forgotten that money is a bad feature ๐
14:34:11 <xarick> the object is not a class instance
14:35:42 <xarick> it's not catching the error at the time it goes wrong
14:35:53 <talltyler> Have you played Mashinky? It has a fascinating alternative currency economy, where some trains have a running cost in cargo tokens -- general purpose engines cost money but heavy freight engines cost coal, electric trains cost electricity, etc. Want more engines? Transport more coal.
14:35:53 <talltyler> Running cost is the only money that matters. Purchase price just controls how fast you can expand, veruss waiting around for money to come it.
14:36:38 <peter1138[d]> "But why don't all coal-powered steam engines require coal?!"
14:37:02 <talltyler> Game design, obviously ๐
14:37:35 <peter1138[d]> Cargodest which creates demand, so that you can't just send coal across the whole map to make a money printing machine in the first year.... Just takes a bit longer.
14:37:52 <peter1138[d]> "But that ruins my play style"
14:38:15 <peter1138[d]> Hmm, this record is a bit crackly.
14:38:23 <peter1138[d]> Maybe I need a better stylus.
14:38:53 <talltyler> I think Simutrans has cargodest. The two times I've managed to learn the UI enough to set up a route, I lost tons of money.
14:39:39 *** keikoz has quit IRC (Ping timeout: 480 seconds)
14:40:28 <talltyler> I started writing a GS to award better subsidies, intended to be used with a cargo GRF that would lower cargo prices such that you could only make a profit on subsidized routes. But I got stuck on "writing a GS is hard and I hate it" ๐
14:41:43 <talltyler> I have design docs somewhere (not in the repo) but I recall my idea was to claim a town by placing your HQ, and then get subsidies to neighboring towns that you'd need to uphold by providing some minimum quality service, else they'd be taken away.
14:42:32 <peter1138[d]> So with graphs, we currently only allow up to 24 data points. That means 24 years. This works okay for months, quarters and years, because 24 is nicely divisible by 1, 3 and 12. There's no "next step" to go after years, though.
14:42:46 <_glx_> xarick: when looking at the stack I see an OT_INSTANCE
14:43:18 <talltyler> So the furthest back you can see is 12 years?
14:43:59 <peter1138[d]> At least, in calendar time.
14:44:11 <peter1138[d]> In wallclock, that's just, uh, 288 minutes? ๐
14:45:07 <peter1138[d]> The transition points are still the same.
14:45:26 <_glx_> hmm could be the constructor doing messy stuff with the stack
14:45:40 <xarick> i think it's a me problem anyway, I copy pasted around
14:46:34 <peter1138[d]> Wallclock mode is the reason we might consider going back even further.
14:47:47 <_glx_> yeah I can DefSQAdvancedConstructorCallback() doing the "right" thing, but it actually could set the real instance on the wrong one
14:48:51 <xarick> I am not using HSQUIRRELVM vm, which I suspect I should
14:49:09 <xarick> on the FindVehiclesAndFreeWagons
14:53:01 <_glx_> I think I found the error
14:54:37 <locosage> talltyler: would be nice if gs could do alternative currencies
14:54:47 <locosage> probably easier now with badges as well
14:54:58 <locosage> as it can use badge as an icon without extra newgrf stuff
14:58:55 <_glx_> xarick: indeed you were messy with the stack, so DefSQAdvancedConstructorCallback() was doing sq_setinstanceup() on the wrong thing
14:59:19 <_glx_> commented on your #12 PR
15:00:05 <_glx_> you need to be very careful with the stack
15:07:55 *** WormnestAndroid has quit IRC (Remote host closed the connection)
15:07:59 *** WormnestAndroid has joined #openttd
15:14:19 <pickpacket> locosage: currency is a client side setting, isn't it?
15:33:45 <xarick> aha, regression passed
15:34:10 <xarick> testing github security
15:35:33 <andythenorth> locosage: gold? XP?
15:38:20 <locosage> pickpacket: I mean not monetary kind of currency, don't even remember what exactly I wanted it for though
15:43:13 <andythenorth> I tried 'happiness' as a town 'currency'
15:43:15 <andythenorth> didn't work (yet)
15:52:25 <peter1138[d]> Hmm, 45 miles or 85 miles...
15:54:49 <peter1138[d]> Bit of a jump, tbh.
15:56:54 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
16:07:09 *** WormnestAndroid has joined #openttd
16:35:42 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
16:36:29 *** WormnestAndroid has joined #openttd
16:41:25 <locosage> one kind of "currency" that would be nice to show in the status bar is terraform limit
16:41:44 <xarick> templates aren't too smart
16:43:29 <xarick> function template has already been defined
16:44:09 <xarick> it does not like the last one
16:47:30 <xarick> hmm what could I do to fix it
17:31:56 <peter1138[d]> Don't use const in the first place.
17:32:13 <xarick> I can't change that at this point
17:33:00 <LordAro> change it earlier then
17:33:29 <xarick> eh... no way, it's too much work
17:33:58 <xarick> it goes back to VehicleList
17:38:13 <_jgr_> You should not be using `GetOrderStationLocation` in this context
17:39:14 <_jgr_> Unless this is in RemoveRoadStop?
17:39:57 <xarick> `static CommandCost RemoveRoadStop(TileIndex tile, DoCommandFlags flags, int replacement_spec_index)` it is
17:42:51 <_jgr_> Your lambda has a parameter of `const Vehicle *v`, why not just make that non-const?
17:48:46 <peter1138[d]> Yeah, that's nothing to do with `VehicleList`.
17:51:50 <xarick> VehicleList is a vector of const Vehicle
17:52:30 <xarick> it's defined in GroupStatistics
17:53:07 <peter1138[d]> It is. Where is the `VehicleList` in that code?
17:55:29 *** gelignite has quit IRC (Read error: Connection reset by peer)
17:56:38 *** gelignite has joined #openttd
17:57:41 <peter1138[d]> No, there's different code.
18:12:16 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
18:13:52 *** WormnestAndroid has joined #openttd
18:48:09 <andythenorth> hmmm magical variant group hierarchy by badge?
18:48:15 <andythenorth> including substring path? ๐
18:48:44 <andythenorth> my_lovely_train/blue_livery/big_wheels
18:52:37 <xarick> gonna try use a std::vector<Vehicle *> instead
18:58:55 <xarick> now I can't use push_back
19:03:29 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
19:04:30 <LordAro> classic #openttd moment
19:05:01 *** WormnestAndroid has joined #openttd
19:08:51 <peter1138[d]> Oh, my f2 refactor went wrong.
19:12:48 <_glx_> xarick: yes, you can't push a const element into a container of non-const values
19:14:28 <xarick> there you have it, I can't change to non-const
19:15:09 <xarick> I'd need to undo Group code
19:15:12 <peter1138[d]> /me watches as Xarick ends up making an unsorted container that's slower for no good reason.
19:15:51 <andythenorth> to optimise an opcode limited AI
19:15:56 <xarick> doesn't need to be sorted, unless...
19:16:34 <andythenorth> we all need hobbies
19:16:47 <andythenorth> mine is coding Horse trains, then deleting them, 'for balance'
19:16:52 <andythenorth> 'or compile time'
19:17:00 <LordAro> xarick doing something he's been told is a terrible idea and continuing to waste everyone's time and energy by doing it anyway and refusing to learn anything from it, a classic #openttd moment
19:20:55 <peter1138[d]> Somewhat different.
19:22:17 <peter1138[d]> `git reset --hard master`
19:22:30 <_glx_> why is the function arg const in first place ?
19:23:27 <xarick> it all ends up checking the vector which does not like const Vehicle *v
19:24:01 <andythenorth> hmm, what if the amount transported didn't matter?
19:24:20 <andythenorth> it's "enough" sand for the destination industry
19:24:45 <andythenorth> I don't propose a change to OpenTTD, just curious about the idea
19:25:18 <andythenorth> it feels like a kind of goal, even though 100% is borderline impossible
19:25:58 <_glx_> because if the function is expected to modify the vehicle it should not take a const
19:26:53 *** toktik is now known as Guest17750
19:32:31 *** Guest17750 has quit IRC (Ping timeout: 480 seconds)
19:36:32 <xarick> is those changes of yours making squirrel fast
19:38:10 <peter1138[d]> Hmm, don't think weak_ptr will work there.
19:40:16 <peter1138[d]> Too many pointers to things floating around.
19:47:24 <_glx_> everything is interdependant
19:57:50 *** m3henry has joined #openttd
20:10:44 <peter1138[d]> Hehe, even shared pointers are not possible.
20:12:12 <peter1138[d]> `~ScriptInstance()` passes `this` to set the ActiveInstance. As it's a shared_ptr that's being destructed, nothing owns it any more.
20:12:39 <peter1138[d]> This is juist smell ๐
20:18:59 <xarick> what is more sexy: `v->index.base()` or `GetRawIndex(v->index)`
20:22:53 <peter1138[d]> Neither should be used when possible.
20:23:28 <peter1138[d]> it means you're taking a type that's meant to be strong and making it not strong.
20:28:52 <xarick> I'm making it SQInteger
20:29:48 <xarick> enough coding, time to benchmark my changes
20:41:16 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
20:41:23 *** WormnestAndroid has joined #openttd
20:43:42 <xarick> regression failed again--
20:43:54 <xarick> oh well, back to coding
20:46:14 <xarick> no vehicles in the lists... great!
20:47:50 <peter1138[d]> M3HenryviaGitHub: Yeah, effectively just forcing the order a different way. It "works" but it's still fragile as fuck.
20:54:41 <xarick> why the lists stay empty? I see it adding the vehicles
21:03:10 <xarick> ah, I see what I did wrong
21:20:25 *** m3henry has quit IRC (Quit: m3henry)
21:40:34 *** Tirili has quit IRC (Remote host closed the connection)
22:01:17 *** ChanServ sets mode: +v tokai
22:08:29 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
22:16:36 <xarick> oh, i found the problem at last!
22:17:44 <xarick> i had to capture veh_filter
22:24:24 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
22:33:00 *** keikoz has quit IRC (Ping timeout: 480 seconds)
22:46:07 <xarick> benchmark tests finally begin
22:56:05 <xarick> I have a bad feeling about depot iteration
22:56:34 <xarick> but still too early to tell
23:20:01 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
23:25:48 *** WormnestAndroid has joined #openttd
23:42:06 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
23:46:58 *** WormnestAndroid has joined #openttd
continue to next day โต