00:13:20 <09h​ellmonk> clearly the finger number should be 9 (for the fingers left after it got chopped off) 00:33:10 Unstable branch on cbro.berotato.org updated to: 0.33-a0-691-gb602fafdc2 (34) 00:45:07 hikkokomori (L14 GrEE) ERROR: range check error (-1 / 53) (Volcano) 00:55:29 Monster database of master branch on crawl.develz.org updated to: 0.33-a0-691-gb602fafdc2 01:01:25 hikkokomori (L16 GrEE) ERROR: range check error (-1 / 53) (Gauntlet) 01:01:54 03dolorous02 07* 0.33-a0-692-g385c7f6713: Use apostles' pronouns when anointing them. 10(6 minutes ago, 1 file, 2+ 2-) 13https://github.com/crawl/crawl/commit/385c7f671338 01:02:20 <04d​racoomega> That crash looks like trying to equip an item off the floor, from item_def& real_item = you.inv[_get_item_slot_maybe_with_move(item)]; (which returns -1 if it fails to move it into your inventory) but what I find strange is that this has already had to pass _can_move_item_from_floor_to_inv which should verify that this is possible to do. (And, in fact, I cannot immediately reproduce this myself) 01:02:47 <04d​racoomega> If my inventory is full, it just aborts before that (as it should) 01:03:00 hikkokomori (L16 GrEE) ERROR: range check error (-1 / 53) (Gauntlet) 01:03:26 <04d​racoomega> Is there any case where _can_move_item_from_floor_to_inv can return true, but moving actually still fail? 01:03:58 hikkokomori (L16 GrEE) ERROR: range check error (-1 / 53) (Gauntlet) 01:04:21 <04d​racoomega> They seem to be doing it a lot. Maybe I should see what they're doing 01:05:17 hikkokomori (L16 GrEE) ERROR: range check error (-1 / 53) (Gauntlet) 01:05:39 <04d​racoomega> Really wish we could yank people's save files 01:06:54 <04d​racoomega> (I caught a brief glimpse of them in play, and they did just seem to be trying to put on some Gauntlet loot from the ground, but nothing about what they were doing looking obviously unusual 01:19:54 <04d​racoomega> Some of this code is ancient and ugly 01:20:30 <04d​racoomega> (I really do wish I had their save file, so I could actually see what part of this string of 'put item into inventory' is failing, instead of trying to imagine where it is possible to fail in a way that the other function doesn't anticipate) 01:21:35 <04d​racoomega> Since that feels like a tall order 01:23:41 <04d​racoomega> Oh 01:23:45 <04d​racoomega> Maybe progress? 01:26:16 hikkokomori (L17 GrEE) ERROR: range check error (-1 / 53) (Snake:1) 01:30:55 <04d​racoomega> Huh. The suspect root cause of this entire thing may actually be unnecessary now 01:33:48 <04d​racoomega> Back when the new equip system actually had stat zero checks for multi-item sequences of equip/unequip, it tested these by actually equipping item in the background first (similar to how equip previews work). And, like that, since it's impossible to equip something not actually in your inventory (a fact this rewrite did not change), it temporarily copies it to a 'secret' part of your inventory so that it can actually run these tests. 01:33:49 The actual problem here involves warnings that caused prompts that the used can cancel, like ^Drain. Which both could cause the function to end early and not do proper cleanup and to assert on trying to map an inventory letter to the item that isn't where normal items are. But I actually think this entire thing is unnecessary now, and it can probably prompt against the floor and only move afterward, skipping all this. 01:41:27 hikkokomori (L18 GrEE) ERROR in 'prompt.cc' at line 376: ASSERT failed: the_index of 52 out of range 0 (0) .. ENDOFPACK (52) (Lair:2) 01:42:49 <04d​racoomega> Yup, that's the other crash 01:43:07 <04d​racoomega> (I probably have this fixed, but y'know, waiting on compiling as always >.>; ) 01:45:31 hikkokomori (L18 GrEE) ERROR: range check error (-1 / 53) (Lair:2) 01:50:31 03DracoOmega02 07* 0.33-a0-693-g296d49ecf8: Fix a couple crashes related to equipping dangerous items on the floor 10(2 minutes ago, 1 file, 4+ 23-) 13https://github.com/crawl/crawl/commit/296d49ecf816 01:50:31 03DracoOmega02 07* 0.33-a0-694-ge07210bfbf: Fix the Vainglory debuff being dispellable (Darby) 10(87 seconds ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/e07210bfbf1c 04:35:42 Experimental (bcrawl) branch on underhound.eu updated to: 0.23-a0-5249-g4a8afe7061 05:32:03 Unstable branch on crawl.akrasiac.org updated to: 0.33-a0-694-ge07210b (34) 07:38:49 <09g​ammafunk> Cute suggestion from a Patreon supporter: > Hey, what would you think of adding a "replay last dungeon" button to the main menu (just had another very stupid death)? 07:39:13 <09g​ammafunk> Guess that could work with seeded play 07:40:00 <09g​ammafunk> Would take a little work to save the last seed upon game completion but is doable 08:02:31 Jeffwins (L13 VSEn) ERROR: range check error (-1 / 53) (IceCv) 09:58:23 <06w​ensley> How reproducible is crawl's seeded play? As in, is the PRNG for dungeon/item/monster generation fully separate from anything the player has influence over, so that taking one step differently doesn't lead to different dungeons? 10:03:47 <09g​ammafunk> crawl's dungeon generation is completely seeded thanks to amazing work by advil circa version 0.23 or so 10:04:43 I see all calls to any random functions were split into sequence points. Was a lot of work. 10:04:48 <09g​ammafunk> the rng for dungeon generation was made separate from gameplay/UI rng and tons of difficult work was put into various aspects (C++/lua compilation and a lot of other design issues) to make seeded play an actual reality 10:05:07 <09g​ammafunk> yeah the sequence point thing is really only the tip of the iceberg 10:05:36 <09g​ammafunk> there were lots of other lower-level design changes that needed to be made, but advil made it all work 10:05:49 Great work. 10:07:50 This is also the reason the "generating ..." message has a fixed order 10:08:28 <09g​ammafunk> yes, guaranteed dungeon generation order was another necessity due to some unique aspects of how crawl uses its vaults 10:08:32 If you visit Orc before Lair you will see all Lair branches getting generated. The names of S-branches are, of course, masked. 10:08:51 <09g​ammafunk> even if you have a separated dungeon rng, because crawl vaults by default can only be used once per game 10:09:16 <09g​ammafunk> player visitation order could change determination of what vaults are selectable as a new level is generated 10:09:56 <09g​ammafunk> e.g. a vault that can place in both Lair and Orc, yet the player chooses to visit Orc before lair in one run of a seed but then Lair before Orc on another run of the same seed 10:10:15 <09g​ammafunk> if dungeon order generation isn't in a fixed order beforehand, the seed can't be stable 10:10:52 I think the current implementation is the best among various possible ways to do that. Simple, and usually efficient in the sense that it tries its best to only generate as much as needed. 10:11:57 <09g​ammafunk> right, the options are full dungeon generation at game start, which takes forever and fully utilizes a cpu for a good while, or progressive generation, which has a much better feel and less continuous cpu utilization 10:12:30 <09g​ammafunk> the old system before seed stability simply generated each level the moment it was entered 10:12:52 <09g​ammafunk> but that's not compatible with the needs of seed stability, so advil make the progressive generation scheme 10:13:29 There is also the "predetermine some high level hidden information such as which vault might go to which branch, then generate each branch with a separate RNG" solution, which might work but might also get in the way of any future branch or vault features. 10:13:55 i.e., lacks the benefit of simplicity. 10:14:00 <09g​ammafunk> yeah, I think other roguelikes like cogmind use that approach 10:14:34 <09g​ammafunk> I think that has a hard time working well with continuous updates to trunk? 10:15:02 <09g​ammafunk> maybe that's all addressable in some way but I don't understand the issues well enough 10:16:05 <09g​ammafunk> breaking stability of a trunk game that gets transfered to a new version of trunk is fine and part of the tradeoffs of playing the development version, but it might complicate save compatibility or something to require all aspects to be pre-determined 10:16:25 <06w​ensley> Interesting approach, impressive work 10:17:29 03dolorous02 07* 0.33-a0-695-g237e977852: Tweak eudemon blade description. 10(8 minutes ago, 1 file, 1+ 2-) 13https://github.com/crawl/crawl/commit/237e9778521e 10:38:04 03dolorous02 07* 0.33-a0-696-gd0af61dcc4: Add missing Protected status description. 10(4 minutes ago, 1 file, 5+ 0-) 13https://github.com/crawl/crawl/commit/d0af61dcc4cd 11:07:14 03DracoOmega02 07* 0.33-a0-697-g32e6db6f59: Remove a stray debugging statement (ge0FF) 10(27 seconds ago, 1 file, 0+ 2-) 13https://github.com/crawl/crawl/commit/32e6db6f594b 11:10:29 <08n​icolae> i was going to look at the shops in grated_communities.des. two things: 1) there's a line # TODO: removed food shop on B, is there a good replacement? i was going to follow the lead on "miraculous elixirs" (which is just potions of mutation) and do a scroll shop with only purple scrolls (noise, torment, vuln, or maybe just torment), on the assumption that someone theoretically could want those, but then again there's no Torment Roulette 11:10:30 so maybe that doesn't work as well 2) going to try to get around to tweaking the legendary smithy by using artprops technology to make randarts with guaranteed downsides so the shop is not entirely useless 11:42:57 <09g​ammafunk> using artprops for grated community shop sounds fun 11:44:07 <09g​ammafunk> you can for fully use stuff like any ring artprops:... any armour artporps and whatnot (use of any in general) with the recent improvement I made to rerolling results when a specific type would conflict with an artprop 11:44:57 <09g​ammafunk> a bad scroll shop seems like it's fine as well 12:11:25 Sounds a bit like the Xom bazaar 12:11:47 But less crazy? 12:43:00 <08n​icolae> : local badprops = {"EV:-8", "Str:-8", "Int:-8", "Dex:-8", "Slay:-8", : "rF:-2", "rC:-2", "Will:-2", "-Cast", "-Tele", "*Corrode", "*Slow", : "HP:-15"} how do these numbers and artprops look for armors, should i tone the numbers down a bit 12:51:33 heikuro (L15 MiBe) ERROR: range check error (-1 / 53) (Orc:1) 12:52:15 hikkokomori (L25 GrEE) ERROR: range check error (-1 / 53) (Depths:4) 12:52:22 heikuro (L15 MiBe) ERROR: range check error (-1 / 53) (Orc:1) 12:53:13 <09h​ellmonk> most of those look like "item is unusable unless you don't care about the stat" to me 12:53:32 <09h​ellmonk> besides *corrode and the - resist ones 12:53:40 hikkokomori (L25 GrEE) ERROR: range check error (-1 / 53) (Depths:4) 12:54:32 <09h​ellmonk> not clear that is a problem per se 12:54:46 heikuro (L15 MiBe) ERROR: range check error (-1 / 53) (Orc:2) 12:55:34 hikkokomori (L25 GrEE) ERROR: range check error (-1 / 53) (Depths:4) 13:09:16 <09h​ellmonk> I think you could get away with -5 or 6 on stats and single pip -resists, could also maybe add -mp and ^fragile (extremely funny) to the list. A few of these might interact weirdly if they end up on weapons, so it might be best to have a separate list for those 13:19:05 03nicolae02 07* 0.33-a0-698-gda5e99f6e2: Update the commercial district of grated_community_mu 10(8 minutes ago, 1 file, 32+ 7-) 13https://github.com/crawl/crawl/commit/da5e99f6e29e 13:19:18 <08n​icolae> i decided to only go with armours, mostly to avoid having to fuck around with two separate lists of artprops, though the shop is also listed as an armour shop anyway 13:19:38 <08n​icolae> for numbers i just went with "what's the value of the associated ring, then add one to that and negate" 13:19:52 <08n​icolae> so you can almost but not quite undo it with a ring 13:20:50 <09h​ellmonk> this artprop tech seems good, should deploy into maxwell's wizlab if it isn't already 13:33:23 hikkokomori (L27 GrEE) ERROR: range check error (-1 / 53) (Crypt:2) 14:06:48 gammafunk: pretty sure the game does at least in memory save the last seed 14:06:57 <09g​ammafunk> yeah I agree you probably want to tone it down at least slightly 14:07:09 if you generate, die, go to seeded, isn't it preseeded to the last seed? 14:07:31 <09g​ammafunk> cgettys: You don't understand how the online game launcher works 14:07:38 Oooh, sorry, online 14:07:43 I was thinking local :) 14:07:48 <09g​ammafunk> it's more complicated than that, with multiple launchers 14:07:49 hikkokomori (L27 GrEE) ERROR: range check error (-1 / 53) (Crypt:2) 14:07:57 <09g​ammafunk> but yes it's definitely much for straightforward to implement for local 14:07:59 RIght, I wasn't thinking of online at all 14:08:04 Not what I'm saying 14:08:12 I'm 98% sure it's already implemented in local 14:08:19 <09g​ammafunk> This was sent via patreon as noted above 14:08:21 tho I don't think it persists thru restart 14:08:30 <09g​ammafunk> therefore the player is 100% guaranteed to be an online player 🙂 14:08:48 Fair, I just hadn't put 2 and 2 together 14:08:52 and went "huH? that already exists???" 14:09:53 But yeah,a greed, much harder problem to solve in webtiles 14:10:04 <09g​ammafunk> well no, it's not terribly difficult to implement online in theory, since all the crawl binary has to do is save the last seed into a file 14:10:13 <09g​ammafunk> the crawl binary does this for e.g. the last played combo already 14:11:05 <09g​ammafunk> then the seeded launcher needs to run seeded crawl in a mode that has it populate from the last seed, if it's run with a specific argument (that would be present via the launcher if a user clicked the hypothetical "replay last dungeon" link) 14:11:14 I'm not saying it's hard in t heory, but I agree it's harder than local :D 14:11:24 <09g​ammafunk> all the pieces are there basically, just a bit of implementation 14:11:38 Right, at end of day, it's saving and restoring like 32 bits of info 14:11:42 hikkokomori (L27 GrEE) ERROR: range check error (-1 / 53) (Crypt:2) 14:11:42 not even harder than local 14:11:49 Honestly, I'd go a ibt further if I was bothering 14:12:02 give a "last n seed and deaths" history menu 14:12:11 so if you say angrily start another run and want to go back 14:12:17 itisn't lost 14:12:35 hikkokomori (L27 GrEE) ERROR: range check error (-1 / 53) (Crypt:2) 14:13:06 As for the on error bit... could add an opt-in crash reporting functionality to webtiles with enough work, though that creates its own set of nightmares 14:13:07 <09g​ammafunk> it already isn't lost 14:13:17 Yeah I know can go thru the morgue etc 14:13:23 But I meant friendlier :) 14:13:54 Maybe that's another way to attack it entirely 14:13:57 hikkokomori (L27 GrEE) ERROR: range check error (-1 / 53) (Crypt:2) 14:14:06 <09g​ammafunk> the issue with a full history menu is that this necessitates a menu provided in crawl itself 14:14:22 <09g​ammafunk> but that might actually be a better interface in the end 14:14:26 I haven't really played web, but locally, there's the list of high scores andcharacters 14:14:27 right 14:14:31 that's what I was about to say 14:15:01 that another way to solv eit would be extending the morgue / high score list to be a menu 14:15:41 <09g​ammafunk> online has server-wide high scores and there are per-player logfile entries as well, but those aren't really relevant here 14:15:41 More work than just tracking the last seed tho 14:16:02 <09g​ammafunk> or per-game logfile entries I should say more accurately 14:16:14 not enormously so, just a more complicated lastgame file entry? 14:16:15 You mean per-game-version? 14:16:42 I meant more frontend / GUI work :D 14:16:43 <08n​icolae> yeah those got downtoned before i pushed to primetime 14:17:02 <09g​ammafunk> high score files are by version and server yes, as are logfiles, however the various logfile processing systems aggregate by player name etc 14:17:18 Very nice 14:17:59 <09g​ammafunk> anyhow, that's not really relevant and there's no technical limitation in terms of saving either a last seed or e.g. a history of 10 seeds, as we already do more complicated metadata like I'm describing, but yeah just thought it was an interesting FR 14:18:01 Then the end-all-be-all version of thsi would be to make it integrated into the launcher to be able to relaunch the right version with the right seed 14:18:13 Or, if you want to get mroe wild 14:18:16 shareable link 14:18:37 <09g​ammafunk> well no, you'd probably do it via a crawl menu, like I said 14:18:39 <09g​ammafunk> if you had a history 14:18:41 <03i​mplojin> cgettys: we do already get crash reports from games played on any of the webservers linked to scoring 14:19:04 <03i​mplojin> !crashlog hikkokomori 14:19:05 <09g​ammafunk> there is no need to involve the launcher should you do it that way 14:19:06 <04C​erebot> 16. hikkokomori, XL27 GrEE, T:69436 (milestone): https://cbro.berotato.org/morgue/hikkokomori/crash-hikkokomori-20250112-211351.txt 14:19:41 so things like r/dcss_seeds could just be a link with example.com/0.31-whatever/12345 14:19:51 Oh, I'm not saying it's the best way to implement it from ease of implementation 14:20:08 I was saying in terms of the most convoluted but "cool" user experience 14:20:12 <09g​ammafunk> we have servers, we don't have a single url 14:20:26 <09g​ammafunk> so no a scheme like that will never be possible 14:20:40 <09g​ammafunk> we don't have a unified database of users or anything like that 14:20:40 right, you could replace example.com with whatever your favorite url is in this hypothetical example 14:20:45 <09g​ammafunk> ? 14:20:47 favorite server rather 14:21:02 <09g​ammafunk> I'm giving you, a CAO player, a link to my seed on CDI? 14:21:05 <09g​ammafunk> where you don't have an account? 14:21:12 <09g​ammafunk> not going to work 14:21:20 well, if you're a cao player, you replace CDI's url with cao's 14:21:23 and the suffix does not change 14:21:45 <09g​ammafunk> uh, sure it can, and I don't think passing out "replace this with..." urls is the ideal user experience at all 14:21:58 That's fair 14:22:12 <09g​ammafunk> you just share the seed number and people paste it in, think that's realistically the best you could do 14:22:16 <09g​ammafunk> and is how people currently share seeds 14:22:17 really what I'm trying to get at is the idea you could have a longer seed identifier if that makes sense 14:22:28 like people already do but streamlined 14:22:34 instead of pasting 123456 14:22:50 you could paste in 0.32.1/123456 14:22:55 and launcher would handle the 0.32.1 14:23:00 but probably impractical 14:23:15 <09g​ammafunk> yeah like people just go click on 0.32 in the lobby 14:24:24 Yeah, it's a fine user experience, I was just brainstorming :) 14:26:51 @implojin, I saw that you get logs. I'm saying one could make it upload the save to somewhere for you guys to look at with enough work, if server admins opted in 14:27:41 Unless you do get memory dumps already 14:28:01 but it does require a fair bit of infrastructure and you get into security and privacy stuff that's maybe not worth it 14:29:28 I'm guessing you guys have already thought about that though and just concluded it wasn't worth it 14:30:09 setting up a new server has too many moving parts as it is, tbh 14:31:06 I wouldn't do it as a moving part beyond a single config option to opt-in 14:31:58 "just" (ignoring the real problems with cost/ownership for a minute) set up a Azure Storage account or AWS S3 bucket somewhere to upload into 14:34:08 But that's where all the security and privacy stuff comes in 14:35:23 No setup required at the server level besides user consent, because the data is sent somewhere central when needed 14:36:11 But now you have a "phone home" type thing that you have to make sure only runs if user consent is given and that may make people nervous and has to keep working for old versions forever 14:36:25 https://chromium.googlesource.com/breakpad/breakpad 14:36:30 is an OSS example 14:37:07 though I haven't worked out exactly how you're producing those crash logs, maybe you're using it but not phoing home with it 14:41:47 TRhere's also https://github.com/rust-minidump/rust-minidump / https://hacks.mozilla.org/2022/06/everything-is-broken-shipping-rust-minidump-at-mozilla/ 14:41:57 which is basically a breakpad rewrite 15:18:12 <09g​ammafunk> I mean it would have moving parts because where is the save supposed to come from? Has to be transferred from the server to whatever cloud service 15:25:19 ranchugoldfish (L16 DsHu) ERROR: range check error (-1 / 53) (D:14) 15:28:50 markshark (L15 MiFi) ERROR: range check error (-1 / 53) (Volcano) 15:29:34 markshark (L15 MiFi) ERROR: range check error (-1 / 53) (Volcano) 15:36:18 ranchugoldfish (L16 DsHu) ERROR: range check error (-1 / 53) (Gauntlet) 15:39:53 No moving parts on the server, I mean 15:40:15 e.g. the other designw ould be to have some separate background process you'd set up on the server to handle it 15:43:15 Doesn't make it any less complex, if anything it makes it more 15:43:24 But would mean you don';t really have "per server" setup to do 16:03:08 <09g​ammafunk> You absolutely have to set this up on each server so it is per server setup by definition is the point. It's a moving part because it's something else that's part of server setup and configuration 16:03:31 I'm being clear as mud today, sorry 16:04:17 What I was describing would "only" require a flag that says "yes, whoever owns this server consents to uploading dumps to CENTRALIZED_ERROR_REPORTING_INFRASTRUCTURE" 16:04:37 Of course, the downside is, you have to build CENTRALIZED_ERROR_REPORTING_INFRASTRUCTURE 16:06:08 But the effort to build/maintain that is probably greater than its worth, and the current infrastructure you guys have is probably a better solution as it works and meets your needs 16:07:17 <09g​ammafunk> geekosaur was talking about it being an extra thing that a server admin has to both set up and think about; you're focusing one aspect of it 16:07:46 <09g​ammafunk> which is the fact that it "just works" (in theory) after it's set up 16:08:06 I'm not so naive to think that 16:08:18 <09g​ammafunk> but just like webtiles itself or any other server side thing, the reality is processes have bugs and die and have to get restarted (e.g. when a server is restarted) 16:08:29 <09g​ammafunk> and of course has to be set up in the first place 16:08:45 I'm saying, at sufficient scale, with sufficient effort, it can be done 16:08:57 <09g​ammafunk> setting up and administrating a server is a fairly large set of things to manage and maintain 16:09:04 <09g​ammafunk> right but we're talking about the reality of the thing 16:09:16 <09g​ammafunk> not like what's technically possible in an ideal design in theory 16:09:47 Agreed, which is why I said from the beginning... 16:09:47 13:28 cgettys but it does require a fair bit of infrastructure and you get into security and privacy stuff that's maybe not worth it13:29 cgettys I'm guessing you guys have alre 16:10:40 I think I'm in vehement agreement with you but communicating poorly. Apologies, didn't sleep great 16:16:52 That being said, if I were to doit, I probably wouldn't do it by setting up a server 16:17:08 As you said, setting up and administrating a server is a fairly large set of things to do 16:18:17 It costs ~$45 dollars a year for 1TB of cloud storage 16:18:59 If all you need is storage, can be pretty competitive with the HW + power + time cost of running a server 16:19:14 But does require that someone pays for it obviously 16:19:23 ANd is still some administration involved, sure 16:21:42 03Cgettys02 {DracoOmega} 07* 0.33-a0-699-g37eb8d4443: fix: failing header tests 10(17 hours ago, 5 files, 17+ 0-) 13https://github.com/crawl/crawl/commit/37eb8d44436d 16:22:57 03DracoOmega02 07* 0.33-a0-700-g7d3a69787e: Fix equipped weapons not showing on webtiles sidebar 10(4 hours ago, 4 files, 16+ 36-) 13https://github.com/crawl/crawl/commit/7d3a69787e07 16:22:57 03DracoOmega02 07* 0.33-a0-701-g14d66cf9ea: Fix equip messages for weapons being accidentally removed 10(4 hours ago, 1 file, 6+ 7-) 13https://github.com/crawl/crawl/commit/14d66cf9eac8 16:22:57 03DracoOmega02 07* 0.33-a0-702-g3ec6d0f5d0: Fix a few issues with ' command 10(4 hours ago, 1 file, 5+ 2-) 13https://github.com/crawl/crawl/commit/3ec6d0f5d09a 16:22:57 03DracoOmega02 07* 0.33-a0-703-g285ba1224f: Fix bucklers not showing up when using ctrl+f for 'shield' 10(3 hours ago, 2 files, 25+ 0-) 13https://github.com/crawl/crawl/commit/285ba1224f9d 16:22:57 03DracoOmega02 07* 0.33-a0-704-gf56b7f98d4: Remove ac_with_specific_items functions 10(2 hours ago, 3 files, 35+ 49-) 13https://github.com/crawl/crawl/commit/f56b7f98d486 16:22:57 03DracoOmega02 07* 0.33-a0-705-g5a0e0285cb: Prevent removing the Crown of Vainglory while stair block is active 10(2 hours ago, 1 file, 7+ 0-) 13https://github.com/crawl/crawl/commit/5a0e0285cbed 16:22:57 03DracoOmega02 07* 0.33-a0-706-g9f8dda7171: Fix a crash with many death curses triggering at once (Darby) 10(67 minutes ago, 2 files, 3+ 3-) 13https://github.com/crawl/crawl/commit/9f8dda7171e9 16:22:57 03DracoOmega02 07* 0.33-a0-707-gee6a2ae5b8: Fix some weird effects with Ash and the tiles item window (Darby) 10(52 minutes ago, 1 file, 4+ 12-) 13https://github.com/crawl/crawl/commit/ee6a2ae5b888 16:22:57 03DracoOmega02 07* 0.33-a0-708-g56b6964273: Fix delayed wield printing the wrong message for non-Coglins (cool 3) 10(41 minutes ago, 1 file, 12+ 2-) 13https://github.com/crawl/crawl/commit/56b69642732f 16:22:57 03DracoOmega02 07* 0.33-a0-709-g8ee53adf16: Fix shattering cursed items that grant slots not removing items (Darby) 10(4 minutes ago, 1 file, 10+ 1-) 13https://github.com/crawl/crawl/commit/8ee53adf1672 16:34:52 ranchugoldfish (L16 DsHu) ERROR: range check error (-1 / 53) (D:14) 16:40:40 Unstable branch on underhound.eu updated to: 0.33-a0-698-gda5e99f6e2 (34) 16:50:45 Anyone has any idea why building catch2-tests works totally fine, but catch2-tests-executable, explodes? 16:51:38 Ah, maybe got it, hacky if statement tha tlooks at MAKECMDGOALS 17:00:29 yeah, that was it 17:01:15 <09g​ammafunk> > That being said, if I were to doit, I probably wouldn't do it by setting up a server 17:01:35 <09g​ammafunk> you just misunderstoon what we (geeokasaur/myself) meant by "setting up a server" 17:01:44 <09g​ammafunk> we mean the process of setting up a DCSS server specifically 17:02:05 <09g​ammafunk> when we talk about servers and setting up of servers in this channel, that's usually what we're referring to: a server like CAO, CBRO, CDI etc 17:03:06 :up_arrow: 17:03:19 hm, client still doesn't convert those reliably 17:03:33 I got that part. I just was saying that if I attacked it, I wouldn't try to do it in a way that required any host-specific setup 17:04:08 (other than outbound networking working, which I assume they have to pull e.g. latest trunk, unless it's all "push") 17:04:17 <09g​ammafunk> you have to get the save from the server (i.e. the DCSS server), so in a sense that's not possible 17:05:19 Sure it's possible. on crash, just like you call gdb today, you call some script that attempts to upload to a storage account accessible via a public ip address 17:05:47 <09g​ammafunk> that "some script" lives on the DCSS server 17:05:55 <09g​ammafunk> therefore it will require setup on the DCSS server 17:06:14 DOesn't even have to be a separate script, could be code in-process 17:06:29 though yes that's less reliable if you're already crashing 17:06:51 <09g​ammafunk> when the crawl binary crashes, it's all over 17:06:58 <09g​ammafunk> often times the process itself is simply killed 17:07:17 <09g​ammafunk> due to other kinds of problems that arise in practice (which result in a "crash" from the user perspective) 17:07:43 Fair, solution I described is easier to write if you only handle asserts vs hard crashes without going thru that handler probably 17:08:34 <09g​ammafunk> we have lots of non-assert crashes, yeah 17:08:55 Then it's still possible, but annoying, yeah 17:09:16 heikuro (L15 MiBe) ERROR: range check error (-1 / 53) (Gauntlet) 17:09:26 is linux infrastructure you can turn on to take coredumps in those circumstances, but I'm assuming y ou're well aware. And building such upload infrastructure even to support that is not easy 17:09:42 I'm honestly surprised there aren't more Software as a Service crash report services :D 17:10:02 <09g​ammafunk> well you're talking of uploading saves, so you have more to worry about than getting a coredump 17:10:17 True 17:10:48 But even ignoring all the technical problemss, the legal quagmire is probably worse IMO 17:11:40 I think I've beaten this topic to death 17:11:50 it's technically feasible, but a stupendous amount of work 17:13:18 Probably easier to just go to the servers and get the saves that way, if they haven't been deleted... 17:13:50 via SSH or whatever 17:24:32 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:26:19 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:28:08 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:29:12 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:30:12 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:33:52 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:34:42 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:36:09 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:37:09 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:37:50 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:38:51 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:39:42 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:40:45 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:41:54 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:42:36 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:44:41 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:45:19 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:46:09 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:46:47 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:47:35 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:48:14 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:48:53 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 17:49:30 GnomeSayin (L18 DEHs) ERROR: range check error (-1 / 53) (Elf:2) 18:03:27 03DracoOmega02 07* 0.33-a0-710-gaf52db9ec8: Fix artefact antimagic weapons not reducing your max MP (staticshock) 10(2 minutes ago, 1 file, 10+ 2-) 13https://github.com/crawl/crawl/commit/af52db9ec895 18:42:22 03nicolae02 07* 0.33-a0-711-ga61b68f949: Make the Legendary Smithy's work slightly less legendarily bad 10(77 seconds ago, 1 file, 3+ 3-) 13https://github.com/crawl/crawl/commit/a61b68f94996 18:45:27 sleeves (L14 DgFw) ERROR: range check error (-1 / 53) (D:12) 18:49:58 <08n​icolae> look, i checked the whites on my last commit, this wasn't me-- 18:54:18 <03i​mplojin> it's too late for that, off to the code mines with you 19:09:29 markshark (L23 MiFi) ERROR: range check error (-1 / 53) (Vaults:5) 19:20:02 <09g​ammafunk> ...what the heck do those ~ at the beginning of those DES lines do? 19:27:19 * geekosaur looks confused 19:28:53 <08n​icolae> don't worry about it 19:45:05 03hellmonk02 07[shoppricing] * 0.33-a0-649-gbd7d685625: More pricing shifts. 10(6 minutes ago, 3 files, 41+ 19-) 13https://github.com/crawl/crawl/commit/bd7d68562536 19:47:16 <09h​ellmonk> would love for someone to go generate ~500 shops across various floors and take a look at pricing before/after this. I think the effects should be reasonable but are likely to feel quite severe, may want to tweak gozag as well. 19:48:38 <09h​ellmonk> may also want to reduce bazaar prices to make them feel even more special? 19:49:33 <09h​ellmonk> (currently they get a discount to 60-95% of base, each 5% increment equally likely 19:54:50 <09h​ellmonk> re: evoker supply side stuff, I think just tweaking the number in _superb_object_class might suffice (this is the ISPEC_SUPERB_ITEM function, which I think accounts for most of the generation in E:$ v:$ vaults) 19:56:54 <09g​ammafunk> hrm, don't think objstat generates shop price data 19:57:11 <09g​ammafunk> would be nice but there's a question of how you summarize it really 19:57:27 <09h​ellmonk> yeah, unclear to me that there is a better way than manually generating shops in wizmode 19:58:32 <09g​ammafunk> well, if you could give me an idea of what summary statistic you're looking for 19:58:54 <09g​ammafunk> if you want to just dump every item price for 500 shops you have a lot of data 19:59:33 <09h​ellmonk> to be honest I don't know that I have a metric beyond "do the prices feel reasonable over the course of a game" 19:59:48 <09h​ellmonk> sorry 19:59:54 <09g​ammafunk> yeah, but you sort of can't do that for a dataset of 500 shops 20:00:23 <09g​ammafunk> could look at e.g. 10 before and 10 after maybe but 500 before/after can't really be eyeballed I think? 20:06:05 I feel like I could design a graph for that, but it'd have to be somewhat custom 20:15:20 New branch created: evokernomics (1 commit) 13https://github.com/crawl/crawl/tree/evokernomics 20:15:20 03hellmonk02 07[evokernomics] * 0.33-a0-712-g79dc1f9b6d: Reduce evoker supply 10(2 minutes ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/79dc1f9b6d3a 20:17:42 <09h​ellmonk> wonder about doing a shop or two with a custom item list and just generating it on 5 or 6 different floors. randart unidentified demon blade, +0 triple crossbow of flaming, unidentified potion, scroll of blinking, fire dragon scales, +3 willpower plate, dot dot dot 20:17:49 <09h​ellmonk> that might be "enough" info 20:18:24 <09h​ellmonk> anyway I did the evoker commit, if this strategy seems ok I will merge immediately 20:19:13 <06r​egret-⸸nde※> Draco is... just about to come back into the room after getting food. 20:19:23 <08n​icolae> what kinda food 20:20:17 <06c​ao> Renew Success by crawl Success certs: crawl.akrasiac.org_ecc 20:24:34 <09g​ammafunk> a delicious TLS certificate, probably 20:25:55 <04d​racoomega> Really, while that change is probably an improvement over the current situation of "Way too many evokers in Elf:3, V:5, etc.", I have no idea how this affects evokers chances in the rest of the game (or expected evoker count, etc.) I gut feeling is a bit like "Improvement in status quo, but possibly too simple", but really I just want to stare at some actual numbers for a while. I should go generate some maybe. 20:26:17 <04d​racoomega> Because otherwise it feels kind of like answering blindly 20:26:27 <09h​ellmonk> I think there is some concern that it'll cut evokers too much earlygame 20:26:44 <04d​racoomega> Yes, that is my first concern 20:26:45 <09h​ellmonk> but this approach seemed right to me because it shouldn't affect shop odds or random floorgen (I think) 20:26:56 <04d​racoomega> It doesn't, but really does anyone have any idea what percentage comes from where? 20:27:02 <09h​ellmonk> and those should dominate earlygame where most vaults do not have a lot of superb items 20:27:04 <04d​racoomega> (Okay, it probably doesn't) 20:27:07 <09h​ellmonk> yeah this is all guesswork 20:27:15 <09h​ellmonk> probably worth running objstat 20:27:37 <04d​racoomega> I will go do so now. (Though bear in mind my PC here ^^; ) 20:27:39 <09h​ellmonk> then when it turns out that actually 50% of early evokers are gone too I can think of some other approach 20:29:28 <04d​racoomega> (Basically: this might take a while, but I am recompiling to run objstat now, and will test both before and after changes and report back when I have something worth sharing) 20:31:36 <09h​ellmonk> something else to consider: could add a series of early vaults that spawn an evoker, sort of like some of the early unrand vaults 20:31:43 <09h​ellmonk> to push things back in the other direction a bit 20:32:16 If doing adhoc data exploration, matplotlib is a pretty accessible python library 20:33:02 <09g​ammafunk> this will be fairly focused and a simple comparison of averages/SD/min/max etc before and after on specific levels 20:33:44 Then matplotlib probably wrong tool versus INSERT_SPREADSHEET_OF_CHOICE_HERE 20:34:28 <09g​ammafunk> objstat data is just tdt so spreadsheet is basically always the starting point 20:37:19 <09g​ammafunk> well it's tdt and it's literally formatted in order to be a spreadsheet 20:37:19 stupid question - what does tdt stand for? not a TLA (three-letter-acronym) I remember off top of head 20:37:19 <09g​ammafunk> tab-delimited text 20:37:19 ah, gotcha 20:37:19 I've heard TSV, like CSV but with a T 20:37:19 but never tdt 20:37:19 TIL 20:37:19 Thanks for answering my dumb question :) 20:37:19 <09g​ammafunk> those are actually more standard I think 20:37:19 <09g​ammafunk> should actually say TSV 20:37:19 <09g​ammafunk> > TdT stands for terminal deoxynucleotidyl transferase. It's a protein in the nucleus of cells that adds nucleotides to DNA strands. TdT is a marker for immature lymphocytes in the bone marrow and thymus. 20:37:19 Well, we might need to go get a linguist to go try to define what context we consider standard, no? 20:37:32 <09g​ammafunk> well I think TSV is just by far more widespread 20:37:37 ^ 20:37:47 Maybe advil's area? computation linguistics :P ? 20:37:55 Sorry, bad attempt at a joke 20:40:08 I'm taking a crack at extending the mock player fixture to support more than just "human monk" 20:40:09 <09g​ammafunk> trying to remember where I got into the habit of referring to "TDT", but I can't 20:40:30 So far no luck, need to track down which bit of global state / function call is lacking 20:40:40 but I'll send a PR if I get anywhere with it 20:40:58 <06r​egret-⸸nde※> %git 292434c 20:40:59 <04C​erebot> nicolae {PleasingFungus} * 0.31-a0-451-g292434cca5: Add guarded evoker vaults (Lici, Iguana) (1 year, 9 months ago, 1 file, 143+ 0-) https://github.com/crawl/crawl/commit/292434cca52e 20:41:16 <09h​ellmonk> oh, cool 20:43:00 @r​egret-⸸nde※ - btw, I found a bit of quirky behavior I don't know if you intended or not, if you have a minute to glance at a PR 20:43:48 07regret-index02 * 0.33-a0-655-ga135081b66: Fix berserk and petrify being blue (various) 10(4 days ago, 1 file, 4+ 2-) 13https://github.com/crawl/crawl/commit/a135081b6627 20:43:48 %git a135081 20:44:13 The says it only shows the fullscreen colour when showing all layers 20:44:41 But actually the conditional makes it show if any of the 4 layers are on 20:47:49 Gotta step away to make dinner 20:54:55 <08n​icolae> in it voted 5 20:58:40 <09g​ammafunk> you shouldn't have listened to an iguana let alone two of them 21:51:41 If there are two, does one always tell the truth, and the other one always lies? 22:18:20 <04d​racoomega> So, I have finished running 100 iterations of objstat for both the current and new proposed item weights, and stared at the data a bunch and made some summarizing charts. It's very little reduction pre-Lair (truly earlygame drop rates are super low regardless), but about 25% less by the end of Lair/Orc/D. It's interesting that Shoals currently has a way higher evoker droprate than other S-branches, likely due to how the endvault 22:18:25 uses superb items all the time. The change does make that a bit more even (though I'm not sure if that's 'good' or just 'neutral'). And Elf sure is an outlier, having even more evokers than all of Vaults. I've included a summary of numbers here, grouped by branch (and then by approximate 'game progress'): Total number of evokers found: (Current value) / (After superb item chance reduction) D:1-11 0.308 0.3 D:12-15 0.5 0.34 Orc: 0.15 0.17 (almost all 22:18:25 in shops) Lair: 0.61 0.36 Swamp: 0.34 0.31 Shoals: 1.28 0.58 Snake: 0.47 0.4 Spider: 0.27 0.29 Vaults-4: 0.74 0.61 Elf: 5.54 2.57 (almost all in E:3) V:5: 3.23 1.87 Crypt: 1.62 0.73 Depths 1.58 1.1 Bazaar 0.15 0.11 Trove 0.12 0.16 Sewer 0.01 0.02 Bailey 0.17 0.08 IceCv 0.29 0.23 Volcano 0.01 0.01 WizLab 0.26 0.16 22:18:25 <04d​racoomega> One thing to keep in mind here, compared to the pre-stacking situation, is that despite the stacking rules '3 random evokers' now is actually weaker than it was pre-stacking change, because (aside from a rare number of very specific vaults), when the game placed an evoker, it would always choose one you didn't have. And now that is not the case. And (say) a +3 phial is definitely less strong than 3 different +0 evokers. So those 22:18:25 current 1.57 evokers by the start of S-branches is already likely weaker than a week ago, and 1.17 of them will be even moreso. It stands out a bit to me that the odds of finding evokers in shops is actually surprisingly small. Like, look at those bazaar numbers. (And it adds up to ~0.56 across the entire 3-rune game). That might be one place that could definitely stand a fairly generous increase since they are moderately pricy and all (look, a new 22:18:25 gold sink! >.>) 22:18:46 <04d​racoomega> Dangit, that mangled my nice columns somehow 22:19:03 <04d​racoomega> You'll have to take my word that they were aligned better when I pasted it 😛 22:20:17 <09h​ellmonk> yeah, tweaking shop generation up sounds good to me 22:20:22 BerryKnight (L2 DgCj) ASSERT(item_type_is_equipment(item.base_type)) in 'player-equip.cc' at line 407 failed. (Ossuary) 22:22:34 <09h​ellmonk> not sure that much can be done about shoals evokers, but that branch arguably has the best loot of sbranches anyway (due to javelins and reasonable chance of getting a demon trident plus the aforementioned superb items); I guess it would be thematic to put a chance for phial in the ending 22:23:52 <04d​racoomega> Oh, shit, I forgot to paste the other numbers I claimed were there 22:24:26 <04d​racoomega> Running totals: Pre-Lair: 0.31 0.3 Post-Lair/Orc/D: 1.57 1.17 Post S-branches: 2.75 1.96 Post Elf/V:1-4: 9.03 5.14 Post-Depths/V:5: 13.84 8.11 22:24:56 <04d​racoomega> In terms of 'average total found by then' (not counting portals, but most of those are fairly low) 22:25:31 <09h​ellmonk> 8 per game is roughly what, a couple at +2 and maybe 1 you're missing? for like an average game 22:25:41 <09h​ellmonk> I forget how many types we have now 22:25:44 <04d​racoomega> 5 22:26:23 <09h​ellmonk> yeah, I think I'm fine with increasing the number in shops to compensate then 22:26:37 <04d​racoomega> (And that might be so, though I do have some concerns about going from the old status quo of ~1.57 different ones by S branches to ~1.17 possibly-same ones. Shops may help with that a decent bit, yes) 22:26:57 <04d​racoomega> Since it's cheaper to fill in the holes than it is to just max everything, etc. 22:27:04 New branch created: pull/4233 (1 commit) 13https://github.com/crawl/crawl/pull/4233 22:27:05 03Cgettys02 07https://github.com/crawl/crawl/pull/4233 * 0.33-a0-699-g6171112c8c: fix: Coglin ring/amulet uselessness 10(7 hours ago, 6 files, 168+ 37-) 13https://github.com/crawl/crawl/commit/6171112c8ce3 22:27:22 <09h​ellmonk> let me figure out where the shop generation rate is controlled 22:28:12 03Cgettys02 07https://github.com/crawl/crawl/pull/4233 * 0.33-a0-699-g4c456ec71e: fix: Coglin ring/amulet uselessness 10(7 hours ago, 6 files, 168+ 37-) 13https://github.com/crawl/crawl/commit/4c456ec71e1e 22:28:19 Sorry, forgot to run lint locally 22:28:26 did remember to squash before publish though 22:29:39 @dracoomega - I figured out the Co ring/amulet problem. Question is if the fix broke anything else :D 22:29:52 <04d​racoomega> I believe we don't actually have gadget shops anymore, and I wonder if it would make sense for them to exist again, at least to some degree 22:30:03 <09h​ellmonk> oh, it just uses floorgen code 22:30:16 <09h​ellmonk> for general / antique stores 22:30:26 <09h​ellmonk> which I believe are the only shops that can carry them now 22:30:59 <09h​ellmonk> I wonder if it's sufficient to give those an explicit hardcoded chance to roll an evoker, like the one for talismans in jewelery shops 22:30:59 <04d​racoomega> Oh, there's no way to easily separate it from flood odds? 22:31:07 <04d​racoomega> Oh, huh 22:31:09 <04d​racoomega> Perhaps 22:32:01 sleeves (L20 DgFw) ERROR: range check error (-1 / 53) (Vaults:4) 22:32:05 <09h​ellmonk> unsure how shop type weighting works, could be fine to make gadget shops as a rare shop type? They tended to generate an absurd amount of wand charges though 22:32:58 <09h​ellmonk> does objstat give an easy way to see roughly how many general/general antique shops generate in a game 22:34:55 <04d​racoomega> I... don't think so, actually? Maybe mapstat does?? 22:35:37 <09h​ellmonk> I suppose total number of shops generated period and then divide gets close enough 22:35:48 <04d​racoomega> cgettys: Looking at the PR, I'm fairly sure that's not the best way to go about that. (The line in question apparently wasn't touched in the rewrite, and I think there's a simpler and better solution to it.) 22:35:51 <09h​ellmonk> since shop type is just a random choose 22:36:18 <04d​racoomega> (I'll take care of it real quick here) 22:36:23 <09h​ellmonk> looks like 10 shop types, so just a 1 in 5 to get a general store 22:36:24 <04d​racoomega> Can't comment on the unit test stuff, sorry ^^; 22:36:40 Want me to amend the PR to chop out the fix and comment out the unit test until you fix it? 22:38:49 All the unit test stuff is doing is saving some time in the menu :) 22:39:36 E.g. in theory I can list out exactly what should be useless for each race w/ restrictions, and nobody will ever be able to break it again without failing CI :) 22:39:48 <09h​ellmonk> I guess I need to figure out how many items generate per shop on average too 22:39:56 I wasn't sure if that was the best way to solve it either 22:40:39 <09h​ellmonk> looks like that is strongly weighted toward ~9 22:41:11 03DracoOmega02 07* 0.33-a0-712-gc0115c06c0: Fix jewellery not being marked as useless for Coglins 10(44 seconds ago, 1 file, 2+ 2-) 13https://github.com/crawl/crawl/commit/c0115c06c035 22:46:04 Ah, your check makes more sense than mine 22:47:41 03hellmonk02 07[shoppricing] * 0.33-a0-650-ge5e0252c85: steeper bazaar discounts 10(69 seconds ago, 1 file, 3+ 3-) 13https://github.com/crawl/crawl/commit/e5e0252c8545 22:47:43 03Cgettys02 07https://github.com/crawl/crawl/pull/4233 * 0.33-a0-713-g872bc01c31: feat: improve item unit tests 10(7 hours ago, 5 files, 164+ 37-) 13https://github.com/crawl/crawl/commit/872bc01c3111 22:47:50 Alright, I've adjusted the PR to just be the unit testing part 22:52:33 And the tests pass with your fix too :) 23:19:32 <09h​ellmonk> ok, based on the 0.32 objstat it looks like an explicit 1/10 roll will put an average of ~5 evokers into shops over the course of a game 23:19:36 <09h​ellmonk> will start there 23:26:06 I guess I'll just try it and see, but how slow os objstat, really? 23:26:15 Seems like we could run it in CI on demand if it helped 23:31:05 Read: I am happy to cajole GitHub actions into this if it'd be useful 23:34:14 03hellmonk02 07[evokernomics] * 0.33-a0-713-gee1e10b294: more shop evokers 10(71 seconds ago, 1 file, 2+ 0-) 13https://github.com/crawl/crawl/commit/ee1e10b2940b 23:34:24 <04d​racoomega> objstat is really pretty heavyweight (it is generating entire games worth of dungeons, many many times, and then tabulating everything it sees), but also: I have no idea how you'd make it into an automated test in a way that is useful. We don't have hard targets for almost anything, and stuff that could moderately affect generation in one way or another happens all the time. Even actual generation-related bugs like the recent 23:34:25 ring/amulet thing feels like it would go unnoticed until we had a reason to go looking for something specific. 23:35:25 Unstable branch on crawl.develz.org updated to: 0.33-a0-712-gc0115c06c0 (34) 23:43:11 I wouldn't necessarily make it into a test 23:43:22 just have it publish a build artifact with the files for analysis when desired 23:49:36 In other words: offload long-running task from local machine, so that you can have it struggle to compile instead of struggle to run objstat :D 23:50:34 In theory it's probably trivially parallelizable too, if it isn't doing this already 23:50:56 e.g. 1 instance of crawl per core, each generating dungeons on its own 23:52:20 <03i​mplojin> you may want to look at gammafunk's objstat scripts, which cover similar ground: https://github.com/gammafunk/objstat/blob/master/objstat/objstat.sh 23:52:49 <03i​mplojin> # Need fake_pty since these are being run through parallel without a tty. # one-week timeout. A single job can take a few days on a EC2 micro # instance with only 10% of one cpu. 23:53:03 I looked thru the c++ code, but obviously didn't think to look at that 23:53:11 basically what I had in mind :0 23:53:21 <03i​mplojin> i mean yeah, this isn't even in the crawl repos 23:53:40 But I would go with GH's free runners :D 23:54:45 Which are 4 cores, instead of .1 cores 23:54:53 so a few days should be able to be a few hours 23:55:31 wait, which micro instance is even .1 cores... now I'm curious 23:57:02 Oooh 23:57:06 right fun credit systems 23:57:10 6 minute sof CPU usage per hour 23:57:52 even so, I probably would step up the tiers, if it's parallel 23:58:16 a t2.medium is exactly 4x the price of a t2.micro I believe 23:58:18 Windows builds of master branch on crawl.develz.org updated to: 0.33-a0-712-gc0115c06c0 23:58:20 and has exactly 4x the compute