00:00:23 alexjurkiewicz: what happens if you remove a game from the config while someone is playing it 00:31:16 Unstable branch on CRAWL.XTAHUA.COM updated to: 0.24-a0-10-gb84795d (34) 00:37:55 03ebering02 07* 0.24-a0-11-g46ee55f: Don't use player spell colours for monster spellbooks 10(70 seconds ago, 1 file, 2+ 1-) 13https://github.com/crawl/crawl/commit/46ee55fc9466 00:47:07 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-11-g46ee55fc94 (34) 01:06:57 Stable (0.23) branch on CRAWL.XTAHUA.COM updated to: 0.23-b1-3-gdda8187 01:16:58 floraline: i never do that 01:17:25 floraline: the games I remove are experimentals and forks, and generally they only get removed when nobody has played them in weeks 01:18:52 what if you didn't know they started playing it 01:18:55 feature request: crawl binaries can output a list of places and their correct grammatical details 01:19:03 floraline: I check the lobby 01:19:16 it's possible though, right? 01:19:32 oh, in terms of theoretical concern yeah who know what would happen, definitely something bad 01:20:35 you could get around this by adding an "enabled = true|false" option to each game I guess, which defines if players can start the game but otherwise leaves the game defined. So removing a game would become a two step process 01:20:35 game game game 01:20:43 that's a good idea 01:20:53 what if someone loads the lobby but doesn't click anything yet 01:20:57 then you remove the game and then they try to launch it 01:21:00 alexjurkiewicz: -place-json patch welcome :) 01:23:38 it's so tempting. I've written grammar logic about three times in each language 01:24:06 -!- amalloy_ is now known as amalloy 02:40:14 alexjurkiewicz: have you had any problems as a result of toml being unordered? 02:48:38 -!- amalloy is now known as amalloy_ 03:51:23 Stable (0.23) branch on crawl.kelbi.org updated to: 0.23-b1-3-gdda8187c6f 05:44:07 floraline: nope, but sidenote I really dislike toml aesthetically 08:33:48 03advil02 07* 0.24-a0-12-ga9077f9: More improvements to randomization 10(19 hours ago, 5 files, 24+ 42-) 13https://github.com/crawl/crawl/commit/a9077f9e91af 08:33:48 03advil02 07* 0.24-a0-13-g18b6515: Remove crawl.random_element and replace with something more stable 10(20 minutes ago, 15 files, 183+ 204-) 13https://github.com/crawl/crawl/commit/18b65154750a 08:33:48 03advil02 07* 0.24-a0-14-g542fcb7: Don't use ui_random for bones file choice 10(11 minutes ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/542fcb7d11b2 08:33:48 03advil02 07* 0.24-a0-15-ge63ed06: More RNG initialization improvements 10(8 minutes ago, 3 files, 13+ 4-) 13https://github.com/crawl/crawl/commit/e63ed0601461 08:37:03 I ... may have underestimated how many subtle seed issues there would be 08:37:34 I think there's still something lurking on the lua side 08:37:43 possibly just those other util random functions 08:38:18 it's at least getting harder to replicate seed divergence though 08:43:14 although half of this process is just figuring out what global state I need to reset for tests to work properly 08:43:46 like, it turns out that the number of octopus kind rings spawned is global state on `you`, and has a huge impact on generation, sooner or later, if you don't reset it 08:44:00 *king 08:47:43 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-15-ge63ed06014 (34) 11:23:12 Stable (0.23) branch on underhound.eu updated to: 0.23-b1-3-gdda8187c6f 12:26:49 Unstable branch on crawl.akrasiac.org updated to: 0.24-a0-15-ge63ed06 (34) 12:50:14 i don't think yaml or toml will work for config files because they are unordered 12:50:38 in trunk, the order in which the games are loaded is important 12:53:03 it might be best to just move the game definitions and milestone_files into a separate module and just control access to it through config.py 12:55:29 this also means it doesn't make a lot of sense to spread out your game defs across multiple config files, it would be tedious to make sure they are loaded in the right order 12:59:53 floraline: well, webtiles-changes uses toml 13:00:04 which I've used for other projects and it does work well 13:00:31 floraline: oh, I see what you're saying 13:00:38 I think toml supports arrays ok 13:01:45 I'm not sure what you mean by order of game loading being important for trunk though 13:01:56 if you're talking about menu-wise, well that's simply data that could be in a field 13:02:04 i'm just talking about the menu 13:02:14 i want to avoid having to handle ordering with another setting though 13:02:20 that would get really tedious 13:03:43 floraline: https://github.com/toml-lang/toml#array-of-tables 13:04:16 I thik webtiles-changes might already be using this for its config, or maybe I'm confising that with my beem/cerebot project 13:04:20 oh 13:04:25 but I don't think it'd be hard to get an ordering, yeah 13:04:44 i didn't see that part, thanks 13:04:44 yes webtiles-changes has that exact syntax 13:05:08 again, toml is just what edlothiol chose at the time, quite some years ago, when web 2.0 stuff was a lot newer 13:05:18 I don't know if there's a better format choice these days 13:06:26 i was actually looking at yaml over toml just because we now already have pyyaml, and it's a lot more popular 13:06:32 it would certainly serve our purposes well enough, but if there's a better format with reasonably python support 13:06:38 yeah 13:06:48 don't know if yaml has that issue you describe 13:06:53 it seems you can do the same array of tables in yaml 13:07:06 probably a more reasonable choice then 13:07:45 ok, well that solves the problem of file format. i already wrote it all in yaml so i don't have to rewrite that now 13:07:59 TimeString (L5 HOFi) ASSERT(load_mode != LOAD_VISITOR) in 'files.cc' at line 1439 failed. (D:255) 13:08:17 i'm still not sure i like pulling these definitions from multiple files 13:08:30 you would have to make sure your files are being ordered the way you want them, which again can get tedious 13:10:02 floraline: well, that tends to be solved on unix systems with a simple numeric filename scheme 13:10:18 perhaps that style has fallen relatively out of favor but I think it's still pretty widely used 13:10:52 yeah i like that style but i was hoping to avoid something like that 13:11:03 any time you wanted to reorder things you might have to rename a ton of directories 13:11:21 directories? wouldn't it simply be files 13:11:30 oh right yes 13:11:31 just files 13:11:49 i guess if i just wanted to have one big file i can do that. and others can have multiple files if it doesn't bother them 13:12:01 yeah 13:12:13 -!- amalloy_ is now known as amalloy 13:12:44 well, that's very cool. thanks for finding that section in the documentation 13:13:01 i was only looking at maps which are all unordered 13:14:10 the only problem now is to figure out what needs to happen when we pull the new values in 13:14:26 i know at the very least, the milestone file watchers will have to be restarted 13:15:00 i want to make this work while changing as little as possible 13:16:23 well, webtiles-changes can give you an idea about that, much of that code will be the same 13:21:15 well, I guess the relevant commits aren't quite as informative but 13:21:16 -!- MarvinPA_ is now known as MarvinPA 13:21:28 %git b2665bdd2e 13:21:28 07edlothiol02 * 0.15-a0-701-gb2665bd: Load Webtiles server config from a JSON file. 10(4 years, 9 months ago, 13 files, 324+ 249-) 13https://github.com/crawl/crawl/commit/b2665bdd2e27 13:21:37 this is in general a good commit to check out 13:21:51 especially since it's relative to webtiles trunk (at the time) 13:22:04 it's the implementation of loading config from json instead of from python config 13:22:22 and as part of this implementation, basic reloading of config on the fly is supported 13:22:52 his commit to actually implement that via a signal is a bit after and is very simple, just setting up the handler to call that load() method he implements for Conf 13:23:19 some of the details of that approach we'd not want to do, particularly how he instantiates Conf 13:24:12 basically trying to set it up when the module is imported 13:24:23 I actually used this approach initially for beem, but I found it's just problematic 13:25:18 so I went with having a class for my server that just loads the config as part of its __init__ method in a try/exception 13:26:16 tryig to create a global config object when the config module is loaded is just really a pain to deal with 13:26:33 because managing order of execution becomes a pain 13:26:46 that makes sense 13:26:48 better to just have all that happened at a specific time so you can control the sequence more sanely 13:27:03 i'm not seeing where the milestone tailers are being reloaded in webtiles-changes 13:27:47 if you want to see my approach in terms of inspiration, check out https://github.com/gammafunk/beem/blob/master/beem/server.py and https://github.com/gammafunk/beem/blob/master/beem/config.py and my config toml file for reference is here: https://github.com/gammafunk/beem/blob/master/beem_config.toml.sample 13:28:05 thanks, i will take a look at that 13:28:14 hrm, milestone tailers 13:28:29 not sure where those are in trunk webtiles 13:29:52 it happens once here in server.py on startup: https://github.com/crawl/crawl/blob/webtiles-changes/crawl-ref/source/webserver/server.py#L281 13:30:06 so far it looks the same as trunk 13:30:30 but when the config is reloaded, i dont 13:30:42 see any code going back to check these tailers 13:34:47 that's the kind of thing that worries me most about making this change, reloading stuff from disk is trivial 13:35:08 it's making sure that the code expects these values to change at any time 13:35:37 things could change in the middle of a request 13:39:31 yes, this is the concern I had as well 13:40:06 as far as I could tell, nothing much was done to ensure integrity of the server state and connections' states upon reload 13:41:54 it's certainly possible to do that in terms of having methods for each connection where that method will have the connection reconnect, essentially 13:42:01 but exactly what to do requires some careful looking I think 15:31:07 floraline: about game file ordering I just order my config files, eg 10-trunk.toml, 20-0.22.toml 15:32:03 that's what i was picturing 15:32:13 floraline: the advantage of different files is that if you need to write a config automatically (say when you update trunk) you can do this without needing to touch unrelated config in the same file 15:32:42 why do you have to change the config when you update trunk? 15:32:49 to point to the latest version 15:33:24 oh you're not using dgl 15:33:24 crawl_binary = "/var/dcss/builds/dcss-trunk/0.24-a0-15-ge63ed06/bin/dcss" 15:33:24 right, I just start the binary directly 15:33:53 floraline: one of the things I looked into working on, not sure if I ever pushed anything here 15:34:00 was automating creation of dgl menu files 15:34:16 this would be necessary if you wanted to make adding branches more painless 15:34:29 extending the dgl scripts to better support webtiles-changes and automation in that regard 15:34:36 actually I think I did put a branch to the dgl script repo 15:35:23 yes, guess neil gave me access to this repo 15:35:24 https://github.com/neilmoore/dgamelaunch-config/tree/webtiles-changes 15:35:47 hrm 15:35:53 did neil actually make these commits, or did I 15:36:30 he must have made those and maybe I made some more on top 15:36:55 ah, yes 15:36:56 https://github.com/gammafunk/dgamelaunch-config/commits/webtiles-changes 15:37:05 so I made a fork with some additional commits 15:37:52 I made some dgl scripts to help manage webtiles 15:38:49 this was a long time ago, and I've forgotten most of these details, but yeah on the dgl side I guess there's some script changes we'd want to make to better support webtiles config management 15:39:36 this in part depends on a commit I made in webtiles-changes to split out the client and the server in the makefile 15:39:45 although I think some of that has changed in our current makefile 15:40:12 also, that one person who was working on porting our build to cmake...I guess they stopped working on that 15:41:27 there are a lot of pieces to put together when trying to change this stuff 15:51:38 did they stop working on it? last i checked they had it working for their dev env and hadn't gotten around to making sure it worked for the other environments 15:52:11 last commit was 23 days ago, heh 16:00:30 i feel like we should be able to at least take small steps forward 16:00:53 allowing certain config items to be reloaded on the fly should be doable now without too many changes 16:04:01 my goal right now is to find the smallest changes that solve the problems i'm looking at right now and also don't require any action from any server operators 16:10:32 floraline: yes, although it's actually ok if this does require setup from server operators, as you and alexjurkiewicz are the two admins who most want this functionality 16:10:32 and you both are find with doing a configuration change or two 16:11:43 if you mean in terms of interrupting operation for normal admins, you'd probably have to make some kind of unusual change to the client for that to even be possible 16:12:19 hrm, maybe I'm misremembering how changes to webtiles server are rolled out 16:12:40 I guess normal updates do change webtiles server, don't they 16:12:52 we just exclude e.g. config.py, or something like that? 16:14:54 some files are copied from webserver/ when install-trunk runs 16:15:30 so a lot of servers will fail to restart if the new code does not run using old config 16:16:16 ah, yeah, I see 16:16:36 so i'm fine with using yaml because everyone should have pyyaml now 16:16:42 but i don't want to use toml 16:17:01 well, that's fine re using yaml, but again how would it be possible to not interrupt server operation 16:17:12 if config moves to yaml, they must convert their config to yaml 16:17:27 it can support both 16:17:47 at the risk of complicating the codebase 16:18:01 yeah, it may be a lot wiser to simply coordinate with admins to roll out these changes 16:18:42 I agree with your idea of minimalism for initial changes, but I think trying to guarantee a 0 effort upgrade is possibly not feasible 16:19:15 for dgl based servers where an update would break them, we do have cue cxc cao and cbro to consider 16:19:50 probably those last two present a bit of challenge since the admins have lest time available 16:20:26 might want to get opinions from |amethyst and johnstein themselves, especially the former as to what is the best approach 16:21:09 I think Medar and TZer0 would probably be ok with going through some steps to convert their config over if given notification 16:25:14 we could also provide a script that converts config.py data to yaml 16:25:37 since config.py has python data, that's easy to just load, and I imagine it wouldn't be too hard to convert that to yaml using pyyaml 16:58:19 my original idea was to move options that were made to be reloadable into a config.yml and everything else stayed in config.py 16:58:38 that way config.py could be changed to allow the code to keep asking for config.games or whatever so it would neatly fallback in the event that you had an old config.py 17:02:02 i guess we could move everything into a config.yml all at once, and just have reload pick up some changes and not others 17:03:37 in that case, migration might be easily automated. just yaml.dump(config.py) into config.yml and you're good to go. your new config won't look pretty that way, but it would work 17:09:25 03gammafunk02 07* 0.24-a0-16-g0a484b6: Tweak the no-teleport message for Gauntlets 10(6 hours ago, 1 file, 4+ 1-) 13https://github.com/crawl/crawl/commit/0a484b665a29 17:09:25 03gammafunk02 07* 0.24-a0-17-g2c779b6: Prevent use of Passage of Golubria in Gauntlets (Yermak) 10(6 hours ago, 2 files, 12+ 0-) 13https://github.com/crawl/crawl/commit/2c779b6b6d14 17:09:25 03gammafunk02 07* 0.24-a0-18-gcd3d6b9: Update documentation of a function 10(3 hours ago, 1 file, 4+ 1-) 13https://github.com/crawl/crawl/commit/cd3d6b93d089 17:12:15 03gammafunk02 07[stone_soup-0.23] * 0.23-b1-4-g53b5eb8: Tweak the no-teleport message for Gauntlets 10(6 hours ago, 1 file, 4+ 1-) 13https://github.com/crawl/crawl/commit/53b5eb8da2c0 17:12:15 03gammafunk02 07[stone_soup-0.23] * 0.23-b1-5-gf1159c6: Prevent use of Passage of Golubria in Gauntlets (Yermak) 10(6 hours ago, 2 files, 12+ 0-) 13https://github.com/crawl/crawl/commit/f1159c66918a 17:12:15 03gammafunk02 07[stone_soup-0.23] * 0.23-b1-6-ga921848: Update documentation of a function 10(3 hours ago, 1 file, 4+ 1-) 13https://github.com/crawl/crawl/commit/a921848b4870 17:12:31 fwiw with webtiles changes you can send a particular signal (USR1) and *only* games are reloaded 17:15:40 !learn edit gauntlet[1] s/teleport/teleport or use {passage of golubria}/ 17:15:40 gauntlet[1/3]: A new portal in 0.23 that replaces the {labyrinth}. Players choose a path to fight through combat arenas with monsters and loot before fighting the {minotaur} for its hoard. Access to each arena is one-way through transporters until the minotaur and exit are reached. Players can't teleport or use {passage of golubria}, but other translocations work normally. 17:17:35 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-18-gcd3d6b93d0 (34) 17:31:35 if nobody has any objection i think i'm going to turn off this trunk build announcement 17:31:41 as long as it's on a 15 minute schedule it's more annoying than anything 17:31:49 it's actually sort of useful when making changes 17:32:05 I mean, if it's annoying you, it's your bot though :) 17:32:26 but it probably won't announce unless there have been commits, right? 17:32:53 anyways, I do like to know when my things go live 17:47:11 03advil02 07* 0.24-a0-19-g0b81bb8: Reset temple vault tags when doing temple setup 10(19 minutes ago, 2 files, 18+ 1-) 13https://github.com/crawl/crawl/commit/0b81bb8f681f 17:47:45 oops, that somehow ended up as one commit 17:47:47 floraline: it you do decide to keep it up, you can also have your irc client specifically block those messages from Kelbell 17:47:56 without blocking other ones 17:48:07 well, you probably can; most clients support that kind of filtering 17:55:58 oh i can keep it then, no problem. i had no idea whether they were useful to anyone 17:56:08 i'm using irssi, maybe i'll see if i can figure that out 18:02:30 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-19-g0b81bb8f68 (34) 18:11:13 The build has errored. (master - cd3d6b9 #11013 : gammafunk): https://travis-ci.org/crawl/crawl/builds/487164782 18:13:22 false alarm, but TIL we have a crosscompile build in travis 18:13:28 I probably knew that at one point, but forgot 18:21:49 Unstable branch on underhound.eu updated to: 0.24-a0-19-g0b81bb8f68 (34) 19:07:28 The build has errored. (stone_soup-0.23 - a921848 #11014 : gammafunk): https://travis-ci.org/crawl/crawl/builds/487165728 19:50:29 -!- amalloy is now known as amalloy_ 19:53:29 well. this is fascinating. 19:53:50 ^O shows Vaults entrances on D:12 and D:13. The one on D:12 is not obvious. 19:54:06 go to D:12, ^GV0, "You're already here!" 19:54:13 this sounds confused. 19:55:33 (anywhere on the level, apparently) 20:06:23 !source _place_specific_trap 20:06:24 1/1. https://github.com/crawl/crawl/blob/master/crawl-ref/source/dungeon.cc#L93 20:06:39 ebering: do you happen to know why that is an error mprf? 20:07:00 is it not supposed to happen or something? 20:07:37 geekosaur do you have a save? 20:08:04 I can make one, although I'm in Snake right now 20:09:33 that's probably fine 20:13:43 hm, hadn't updated since the branch either 20:15:41 crawl thinks all of D:12 is a Vaults entrance? 13https://crawl.develz.org/mantis/view.php?id=11850 by geekosaur 20:19:19 -!- amalloy_ is now known as amalloy 21:06:40 !source _make_level 21:06:40 1/1. https://github.com/crawl/crawl/blob/master/crawl-ref/source/files.cc#L1244 21:06:52 is it possible for abyss to have portals to pan? 21:07:01 hm i guess not. That was something a fork had 21:19:07 advil: just noticed this "rng_generator" = random number generator generator 21:23:44 is there a better way to write this? level_effect_type level_effect = static_cast(random2(level_effect_type::COUNT)) 21:51:42 03advil02 07* 0.24-a0-20-g05a21ba: Various fixes for more stable lua iteration order 10(2 minutes ago, 7 files, 54+ 28-) 13https://github.com/crawl/crawl/commit/05a21ba7acd5 21:51:56 alexjurkiewicz it's really a sub-generator 21:53:35 apparently nethack 4 has 209 sub-generators 21:58:51 alexjurkiewicz: before you go too crazy with implementing that, you probably want to put something somewhere for devs to see what you're actually planning to implement effect-wise 21:59:09 because I'm guessing there will be some that we'd not merge in the first place 21:59:24 %git a39c87378c 21:59:24 07ebering02 * 0.23-b1: Changelog through 0.23-a0-899-gbbae0a335a 10(3 days ago, 1 file, 29+ 3-) 13https://github.com/crawl/crawl/commit/a39c87378c14 22:01:09 geekosaur: this wasn't a pregenerated dungeon was it? (Your version # is after that was merged) 22:02:11 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-20-g05a21ba7ac (34) 22:05:32 doesn't the save file indicate that? 22:05:47 I didn't add any ui element to say 22:05:52 it's probably a good idea though 22:06:39 though going to a new level builds it, so I guess not 22:06:46 no, unless it somehow did that by default. I didnt secify seed or anything 22:08:56 something is off with your travel cache, but it will clear up if/when you eventually enter the vaults 22:09:59 it doesn't seem to be about the level or anything like that 22:30:00 !source dungeon.cc:5909 22:30:00 https://github.com/crawl/crawl/blob/master/crawl-ref/source/dungeon.cc#L5909 22:30:16 ebering my question earlier was supposed to be about that ^ 22:31:42 I might ditch that mprf, it doesn't seem to actually be an error really, in that there are plenty of vaults that can place a shaft and can be at a branch end 22:32:39 maybe it's an mprf error because 4 years ago wheals downgraded it from an ASSERT 22:33:10 %git c068da2d1 22:33:10 07wheals02 * 0.16-a0-794-gc068da2: Be a little less violent about invalid traps. 10(4 years, 4 months ago, 1 file, 3+ 2-) 13https://github.com/crawl/crawl/commit/c068da2d193e 22:36:05 %git 7c65259dd8 22:36:05 07wheals02 * 0.16-a0-730-g7c65259: Handle vaults placing shafts in branch ends more gracefully. 10(4 years, 4 months ago, 1 file, 3+ 0-) 13https://github.com/crawl/crawl/commit/7c65259dd833 22:36:16 ok, at that point I guess it was considered a bug 22:48:01 ??tournament 22:48:01 tournament[1/2]: See {past tournaments} for links to previous tournaments. 22:48:07 ??tournament[2 22:48:07 tournament[2/2]: Repository of tournament code: https://github.com/crawl/dcss_tourney 22:50:20 !learn add tournament[1] The 0.23 tournament will run from 20:00 UTC Friday 8 February 2019 to 20:00 UTC Sunday 24 February 2019. Tournament home page: https://crawl.develz.org/tournament/0.23/ 22:50:20 tournament[1/3]: The 0.23 tournament will run from 20:00 UTC Friday 8 February 2019 to 20:00 UTC Sunday 24 February 2019. Tournament home page: https://crawl.develz.org/tournament/0.23/ 22:51:43 oh, heh, for some reason shafts were disallowed in tests (??) and that's why I'm seeing that mprf all over the place 22:54:32 !time 22:54:33 Time: Feb 01, 2019, 03:54:32 AM, UTC. The 2019 0.23 tournament starts in 7 days, 16 hours, 5 minutes and 27 seconds. 22:54:52 are we doing any rules changes? 22:55:02 there seemed to be a lot of good ideas around after the last one 22:56:09 gammafunk: yeah. I'm planning to just build a skeleton and implement a couple of prototype effects 22:56:45 💯 22:57:18 emoji from the funk? what 23:00:14 emoji are just uncool emotes don't @ me 23:02:01 03advil02 07* 0.24-a0-21-ge4bce67: Allow shafts in tests 10(58 seconds ago, 1 file, 1+ 4-) 13https://github.com/crawl/crawl/commit/e4bce670a794 23:03:59 what would be the right place to store metadata about a level? eg the level effect 23:04:11 my hacky implementation is storing it in you, which is definitely wrong 23:07:55 I believe each level has a props hash 23:08:05 hrm, that may be grid-based 23:08:31 lucy's level corruption would be the model we want, probably 23:12:09 I guess env.map_markers 23:12:26 that is position-based though 23:13:17 ah, yeah but that's probably what you want 23:14:09 or no 23:14:13 env.properties 23:14:28 alexjurkiewicz: env.properties is a per-level CrawlHashTable 23:15:06 if you wanted something position-based you can use env.map_markers 23:17:15 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-21-ge4bce670a7 (34) 23:17:18 env.properties sounds perfect then 23:17:24 thanks for the digging 23:29:14 !source grd 23:29:15 Can't find grd. 23:29:49 ! 23:31:13 how does this witchcraft work 23:31:46 it's a define; try it with ctags or something equiv in your code editor 23:31:53 it's a define for env.grid 23:33:44 aha, searching just in *.h found it 23:36:58 omg don't add any more dungeon builder state to you 23:37:30 wonder what is with all the "Multiple branch exits on Tomb:1" errors 23:40:54 03advil02 07* 0.24-a0-22-g2a401c0: Clear more global state for tests 10(32 seconds ago, 1 file, 1+ 0-) 13https://github.com/crawl/crawl/commit/2a401c07d103 23:47:27 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-22-g2a401c07d1 (34) 23:59:17 yes. I can turn all doors into blood fountains 23:59:43 probably this is good enough to be a real effect. It adds more blood fountains to the game, which is a net positive any way you look at it