00:27:30 Unstable branch on CRAWL.XTAHUA.COM updated to: 0.21-a0-196-g6a663c0 (34) 00:29:20 @??summoner 00:29:20 unknown monster: "summoner" 00:33:12 did some monsters used to be able to cast fulminating prism? 00:33:27 seems like there's some code to handle the situation 00:33:35 !source cast_fulminating_prism 00:33:36 1/1. https://github.com/crawl/crawl/blob/master/crawl-ref/source/spl-summoning.cc#L2950 00:33:37 uh 00:33:41 none that i know of 00:33:47 with the possible exception of ghosts 00:34:08 hmmm 00:34:10 ghosts definitely could now that i think about it 00:34:15 possibly still can 00:34:17 maybe that's what's going on 00:34:29 if (caster->is_player() 00:34:30 || (you.can_see(*caster) && you.see_cell(where))) 00:34:30 { 00:37:59 hm. is there a reliable way to create a ghost with particular stats? 00:38:25 or just kill a character with the stats I want, copy the bones file, and just keep reloading games till I see it? 00:39:46 <|amethyst> deleting other bones files would help 00:40:02 <|amethyst> if you build with DEBUG_BONES you can use &^G 00:40:32 <|amethyst> (which is enabled by FULLDEBUG) 00:40:45 ooh 00:44:56 !kw ghostly 00:44:56 Keyword: ghostly => !boring !won ktyp!= lg:place!=D:1 lg:place!=D:2 lg:place!=Temple lg:place!=abyss !mu !gh !vp lg:status!~~lich 00:45:04 shoot, D:2 also 00:46:10 hmm. I let a dude die on D:3 but nothing in the bones file 00:46:39 bones folder I mean 00:47:03 ??ghost 00:47:03 ghost[1/5]: Ghosts get damage, hitpoints, resistances, speed (not move delay), and spells very closely based on the former adventurer. All player ghosts are immune to poison, asphyxiation, torment, and negative energy. 00:48:58 I'd try the DEBUG_BONES, but I'm sure that will take 30 minutes or more for a full recompile 00:50:10 oh. maybe because it's wizmode? 00:54:34 so when do ghost spells get picked? when the player originally dies? when the bones file is loaded? 01:15:10 I can't seem to figure out how to make this ghost learn f. prism 01:59:40 03johnstein02 07https://github.com/crawl/crawl/pull/594 * 0.21-a0-189-gb10dd60: Add a parameter to a function 10(2 hours ago, 2 files, 6+ 5-) 13https://github.com/crawl/crawl/commit/b10dd60c2f15 01:59:40 03johnstein02 07https://github.com/crawl/crawl/pull/594 * 0.21-a0-190-g8d47aad: Handle ghosts casting these spells 10(28 minutes ago, 1 file, 10+ 6-) 13https://github.com/crawl/crawl/commit/8d47aad3f520 01:59:40 03johnstein02 07https://github.com/crawl/crawl/pull/594 * 0.21-a0-191-g91da654: Toggle autopickup when detecting monsters with spells 10(5 minutes ago, 1 file, 4+ 1-) 13https://github.com/crawl/crawl/commit/91da65494674 02:01:47 "these spells" :P 02:02:04 yea, it's just a placeholder commit that will get squashed later. 02:05:36 -!- bug_sniper is now known as Elbereth 02:05:43 -!- Elbereth is now known as bug_sniper 02:47:03 i know as recently as a year or two ago, pan lords could cast f.prism 02:47:10 i think it got taken away though 02:47:46 %git 2d9ae9d7a9e0a4fcd3a021a97630a0e6cdeb7eb9 02:47:46 07MarvinPA02 * 0.20-a0-175-g2d9ae9d: Don't let monsters cast Fulminant Prism 10(9 months ago, 1 file, 1+ 87-) 13https://github.com/crawl/crawl/commit/2d9ae9d7a9e0 02:49:14 johnstein: if you want to test creating player ghosts with particular spells, you can do something like: %mplayer ghost spells:magic_dart.200.wizard 02:49:21 &m, not %m of course 02:49:37 this is described in https://github.com/crawl/crawl/blob/master/crawl-ref/docs/develop/levels/syntax.txt#L937 02:50:13 (but it doesn't work for f.prism because as discussed monsters can no longer cast that) 02:51:50 monsters also can't cast lightning spire, which i imagine is the other spell you're thinking of 02:54:21 they can't cast it....YET! 03:22:01 Unstable branch on crawl.beRotato.org updated to: 0.21-a0-196-g6a663c0 (34) 05:00:15 .gfgk 05:00:16 681. deartome the Cleaver (L10 MiFi of Trog), slain by an orc knight (a +3 great sword) on D:8 (gammafunk_beogh_shrine) on 2017-08-15 06:50:19, with 4718 points after 8307 turns and 0:15:20. 05:00:26 do you think this user's name is a love letter to TOME? 05:00:34 .gfgk x=src 05:00:35 681. [src=cwz] deartome the Cleaver (L10 MiFi of Trog), slain by an orc knight (a +3 great sword) on D:8 (gammafunk_beogh_shrine) on 2017-08-15 06:50:19, with 4718 points after 8307 turns and 0:15:20. 05:00:41 on cwz so probably not 09:23:23 thanks amalloy. I was pretty confident non ghost monsters couldn't cast prism and spire since I couldn't find any monsters with that spell in their spell set 09:24:06 but I didn't know about player ghosts. 09:24:40 but sounds like player ghosts can't cast spells that monsters can't cast? 10:29:17 -!- Dracunos_ is now known as Dracunos 10:44:49 often the monster version is implemented separately, so that at least places a lower bound on it 10:45:32 pan lords can sometimes cast spells that regular monsters can't, though, and I think at least historical ghosts could too 10:45:53 not sure what the current state of things is 11:15:12 so for spells like f prism that were once castable by monsters but not anymore, are the cast_ functions ever updated to remove the code that handles monsters casting them? 11:15:32 like the if (caster=player) type of checks 11:26:18 various past devs (grunt and DO come to mind) fleshed out a few spells for monsters that were later spiked, but simply removing checks for player v. monster may not work (runtime crash, or worse) 11:26:26 pan lords and player ghosts are both monsters as far as crawl's internals are concerned, and quite a few spells are coded to only work with players (because they use things that are moissing or different in monster data) 11:27:25 (and most of the spells that were changed back, were changed for a reason; often because of aforementioned crashes. prepare for hard-to-fix or hard-to-track-down bugs) 11:30:13 yea. that was kind of what I was assuming. might be risky to excise some of that code 13:16:12 imo if we never want monsters to cast those spells we should remove the code that handles it 13:19:23 the only reason i can think of *not* to do that would be save compat for games with pan lords who have those spells in their spellbook, but if that is a concern i think we should remove those spells from them on game load 13:22:52 Unstable branch on crawl.akrasiac.org updated to: 0.21-a0-196-g6a663c0 (34) 13:54:15 |amethyst: how would you feel about a patch replacing all instances of x=="" with x.empty() and x!="" with !x.empty()? 14:22:03 man, i don't like how far away from .empty() the ! is sometimes. in an expression like !foo.bar.f(x, y, z).empty() it's easy to lose track 14:22:48 -1 to C-family parser precedence. (not (empty ...)) is clearly better 14:23:28 arguably it should be foo.bar.f(x, y, z).empty().not() 14:23:49 that would be more object-y, yes 14:25:45 which made me think: how does smalltalk do it? and it turns out that yes, smalltalk uses a postfix not. (2 >= 7) not 14:46:51 !source _mimic_vanish 14:46:52 1/1. https://github.com/crawl/crawl/blob/master/crawl-ref/source/mon-util.cc#L1055 14:47:42 this appears to be protecting against _laughs_ not being found in monspeak.txt, but it is there and afaik should always be there. is it important that we keep the defensive clause in this function? 14:49:52 hm, fr generate a unit test from all instances of getSpeakString 14:54:26 defensive programming 15:18:44 !crashlog 15:18:45 17888. PublicChat, XL1 TrCK, T:1 (milestone): https://webzook.net/soup/morgue/0.19/PublicChat/crash-PublicChat-20170814-200001.txt 15:18:52 !crashlog !PublicChat 15:19:04 17726. zahalkas, XL26 MiFi, T:46156 (milestone): https://webzook.net/soup/morgue/trunk/zahalkas/crash-zahalkas-20170814-200001.txt 15:19:21 !cmd !crashlog 15:19:21 Command: !crashlog => !lm ${*:-*} crash -log 15:23:14 what would be the easiest way to get !crashlog to exclude the spurious crash accounts? PublicChat, Ziggurwhatever are the main ones I'm thinking of 15:27:32 though maybe what I really want is for SIGPIPE to not generate a milestone? 15:28:25 advil: probably to create a nick 15:28:38 and have the default command query that nick 15:29:19 is !whatever the right syntax for anyone but that alias? 15:29:26 so it would like like: !lm ${*:-ignoredcrashers} crash -log 15:29:30 if the nick was ignoredcrashers 15:29:47 !lm ${*:-bot} crash -log 15:30:07 75. drasked, XL7 HOMo, T:5715 (milestone): http://crawl.xtahua.com/crawl/morgue/drasked/crash-drasked-20170725-230747.txt 15:30:10 !nick bot 15:30:11 Mapping bot => autorobin xw auto7hm rw qw ow qwrobin gw notqw jw parabodrick hyperqwbe cashybrid tstbtto parabolic oppbolic ew rushxxi gaubot cojitobot paulcdejean otabotab nakatomy testingqw beemell beem drasked phybot medicine dracbot whoyougonnacall khrogbot jwbot lovelain autocrawlbot swippen cotteux someone4956 nofunallowed 15:30:31 yeah looks like that works fine 15:30:49 then create the nick with something like !nick ignoredcrashers name1 name2 ... 15:31:15 oh, right yeah if you want anyone but those 15:31:30 yeah, anyone but that nick 15:31:30 using ${*:-!ignoredcrashers} 15:31:45 !lmg ${*:-!bot} crash -log 15:31:45 ah 15:31:49 !lg ${*:-!bot} crash -log 15:31:50 No keyword 'crash' 15:32:02 er 15:32:04 !lm ${*:-!bot} crash -log 15:32:07 17813. PublicChat, XL1 TrCK, T:1 (milestone): https://webzook.net/soup/morgue/0.19/PublicChat/crash-PublicChat-20170814-200001.txt 15:32:13 yeah looks good 15:32:25 public chat is actually a bot, but it doesn't play games and isn't in that nick 15:32:48 what does what does ${*:-x} do? is that documented somewhere? 15:32:58 yes, all that syntax is documented 15:32:59 ??lg 15:32:59 listgame[1/5]: !lg command displays info about past games. The manual is available here: https://github.com/crawl/sequell/blob/master/docs/listgame.md 15:33:02 in that manual 15:33:06 but what that syntax means is 15:33:29 "expand this variable ($*) and use the value after `:-' as a default value if that variable is undefined 15:33:32 " 15:33:49 ah 15:33:59 yeah https://github.com/crawl/sequell/blob/master/docs/listgame.md#user-defined-commands 15:34:11 thanks 15:34:14 for the specific section 15:34:29 i guess it's inspired by shell script syntax 15:34:34 ??sequellese 15:34:34 sequellese[1/1]: https://github.com/crawl/sequell/blob/master/docs/commandline.md <|amethyst> It's like an unholy combination of Lisp and shell 15:34:44 another good reference 15:35:20 that variable syntax is actually part of "sequellese" and isn't specific to !lg/!lm 15:35:42 although the documentation about that particular syntax might be better in the lg manual 15:36:00 !nick ignoredcrashers PublicChat PublicControlBot ziggurnaut 15:36:01 Mapping ignoredcrashers => publicchat publiccontrolbot ziggurnaut 15:36:42 !cmd !crashlog !lm ${*:-!ignoredcrashers} crash -log 15:36:42 Redefined command: !crashlog => !lm ${*:-!ignoredcrashers} crash -log 15:36:45 !crashlog 15:36:46 17596. zahalkas, XL26 MiFi, T:46156 (milestone): https://webzook.net/soup/morgue/trunk/zahalkas/crash-zahalkas-20170814-200001.txt 15:36:56 still a sigpipe but w/e 16:33:17 03amalloy02 07* 0.21-a0-197-g68382d6: Fix a misplaced semicolon 10(11 minutes ago, 1 file, 1+ 2-) 13https://github.com/crawl/crawl/commit/68382d67e91f 16:33:17 03amalloy02 07* 0.21-a0-198-ge013ddc: Use an rvalue reference to avoid some pointless copies 10(14 minutes ago, 2 files, 2+ 2-) 13https://github.com/crawl/crawl/commit/e013ddc241a4 16:33:17 03amalloy02 07* 0.21-a0-199-g94b3988: Factor out some repeated map-building logic 10(14 minutes ago, 1 file, 7+ 6-) 13https://github.com/crawl/crawl/commit/94b3988db2b0 16:33:17 03amalloy02 07* 0.21-a0-200-gb89f83b: Globally replace s == "" with s.empty() 10(15 minutes ago, 25 files, 36+ 36-) 13https://github.com/crawl/crawl/commit/b89f83b06519 16:38:35 New branch created: pull/598 (1 commit) 13https://github.com/crawl/crawl/pull/598 16:38:35 03amalloy02 07https://github.com/crawl/crawl/pull/598 * 0.21-a0-201-g8d05549: Simplify code for making mimics cackle 10(12 minutes ago, 1 file, 2+ 4-) 13https://github.com/crawl/crawl/commit/8d05549928b5 16:55:33 <|amethyst> amalloy: hm, it seems kind of weird to have an rvalue unwrap_desc but not an lvalue version, but I guess there's no point in having the latter if it's not being used 16:56:18 <|amethyst> amalloy: I think you might be able to do slightly better with some compilers by changing the last line to desc += "\n"; return desc; because that gives you the named return value optimisation 16:56:35 <|amethyst> amalloy: (second comment unrelated to the first other than being about the same function) 16:57:11 okay, i know about RVO, but what is named RVO? 16:58:12 <|amethyst> amalloy: http://en.cppreference.com/w/cpp/language/copy_elision ; search for NRVO 16:58:57 <|amethyst> amalloy: basically, if you return a local object directly, the compiler is allowed to construct that object directly in the location that the return value will go 16:59:06 <|amethyst> amalloy: so it can avoid a move 17:00:19 <|amethyst> amalloy: avoid a move compared to the RVO even, since desc + "\n" requires a move while desc += "\n" does not 17:00:30 <|amethyst> s/requires a move/requires at least a move/ 17:01:08 <|amethyst> hm 17:01:27 <|amethyst> I guess, though, nameless RVO is mandatory in C++17, while NRVO is not 17:03:01 <|amethyst> ohh 17:03:02 <|amethyst> never mind 17:03:11 <|amethyst> NRVO doesn't apply to parameters anyway 17:03:19 <|amethyst> hm 17:03:59 oh yeah, that's kinda funny. desc lives in the caller's stack frame already, right 17:04:22 because it's an rvalue reference. so you can't RVO to construct it in-place where the caller is expecting a return value 17:04:23 <|amethyst> it's probably not important anyway, because a move of a string is fairly cheap 17:04:37 <|amethyst> it's like two pointers 17:04:45 <|amethyst> (unless the small string optimisation applies, I guess) 17:06:18 <|amethyst> also, I highly approve of the != "" -> empty() change :) 17:06:54 |amethyst: i suspect it won't last. someone will commit another != "" soon 17:07:09 <|amethyst> add that to unbrace :) 17:07:24 <|amethyst> (I would say checkwhite, but that applies to things that aren't C++ code) 17:07:33 yes, i was thinking something like that. except i never run unbrace, myself, and therefore assume nobody else does. is it automated somehow? 17:07:47 <|amethyst> I run it reasonably often when I'm committing 17:08:04 <|amethyst> (which I don't do so often these days, so maybe not so often overall) 17:08:05 is there something that *is* run automatically? we could put it in a commit hook or something like that, or maybe travis? 17:08:44 <|amethyst> we don't have unbrace/checkwhite in a "mandatory" (default) commit hook, but you're welcome to put it in your own 17:09:14 Unstable branch on crawl.jorgrun.rocks updated to: 0.21-a0-200-gb89f83b (34) 17:09:15 <|amethyst> maybe we should... we do require Perl for building already, right? 17:10:28 we do, yes 17:11:15 <|amethyst> the problem with the != "" thing is that (as you pointed out in the scrollback, I see) it's fairly hard to do in the general case with just a regexp 17:11:24 <|amethyst> really you'd want something like a clang plugin 17:11:37 <|amethyst> and most people don't have clang 17:11:40 |amethyst: it's hard to *fix* with a regex, but it's easy to notice with a regex 17:11:54 and then issue an error message telling the human to fix it 17:13:50 which is why i suggested travis 17:15:02 <|amethyst> is there a way with Travis to distinguish different "levels" of failure? 17:15:07 The build has errored. (master - b89f83b #8619 : Alan Malloy): https://travis-ci.org/crawl/crawl/builds/264899381 17:15:23 <|amethyst> I wouldn't like to conflate "the build failed" with "you have a formatting error" 17:15:33 <|amethyst> since that means you have to fix the latter before discovering the former 17:18:13 well, errored vs failed is already a distinction 17:19:23 I vaguely looked into this when I was a new dev and concluded there wasn't much to be done except tweak timeouts? 17:19:41 i'd love it if travis didn't fail 15% of builds due to failing to apt-get 17:21:26 there's also broken vs errored (neither of which is failed), but I don't know what the difference is 17:23:56 <|amethyst> we could improve that if we moved to the container-based infrastructure, but 17:24:07 <|amethyst> we'd need a whitelisted repo that had sdl2 17:24:18 <|amethyst> which probably exists by now? 17:24:43 isn't sdl2 in debian stable now? 17:24:43 hm, sorry, broken groups with failed 17:25:07 well, I guess I should say: "sdl2 is in debian stable" 17:25:10 failed = new branch, broken = failed in a branch with previous success 17:25:13 but maybe that's not a repo we can use 17:25:50 <|amethyst> we really want the combination of 1. an oldish g++ and 2. sdl2 17:25:54 <|amethyst> which might be kind of hard 17:25:58 oh I see 17:26:15 <|amethyst> alternatively, we could increase our minimum gcc version, but several servers would need upgrades 17:26:31 <|amethyst> on the gripping hand, those servers maybe need upgrades anyway? 17:27:40 I'm sure they could use upgrades, but people would have to volunteer to do that I guess 17:27:49 I assume CAO and CDO would 17:28:08 cdo has 4.7.2 17:28:24 I'm not sure to which version we'd be upgrading actually 17:28:29 *which minimum version 17:29:02 <|amethyst> 5 supports pretty much all of C++14 17:29:04 "on the gripping hand" way to establish your nerd cred :-P 17:29:29 <|amethyst> I haven't even read any Niven/Pournelle 17:29:34 heh 17:29:38 <|amethyst> but I grew up on the Jargon File 17:29:53 ah I see...I have actually read a couple of those books, years ago 17:30:08 very 70s 17:30:25 not sure what cbro is running either, nor if it would be a problem for cxc or cue 17:30:49 <|amethyst> (I have a copy of the New Hacker's Dictionary signed by ESR, and work with the original author of the Jargon File so could get it signed by him at any point; I need to find Guy Steele, though) 17:31:31 <|amethyst> s/author/editor/ # I suppose 17:31:52 <|amethyst> same guy who (co-)invented the quadtree 17:32:34 I suppose "way to establish your nerd cred" still applies 17:33:23 when does c++17 go live? I don't really understand the process still 17:33:42 final standard published on jul 31 17:34:23 <|amethyst> so it's already live :) 17:34:42 heh ok 17:34:47 <|amethyst> need gcc 7 for full support: https://gcc.gnu.org/projects/cxx-status.html 17:34:57 <|amethyst> or some version or another of clang 17:35:22 <|amethyst> though that's just language, not library 17:35:52 <|amethyst> https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html for library status 17:36:40 <|amethyst> looks like libstdc++ 7 has most but not all of C++17 17:37:13 <|amethyst> (relevant table is at the bottom of the page, labelled as C++ 201z) 17:37:15 no clang release with all of it yet though 17:38:45 <|amethyst> to be clear: I wouldn't like to require gcc 7 for building crawl 17:38:56 <|amethyst> gcc 5 I'd probably be happy with, assuming it's available in msys2 17:39:01 we should require gcc 9? 17:39:04 bleeding edge! 17:39:15 <|amethyst> even if that means I have to upgrade my home machine :/ 17:39:22 <|amethyst> (still running 4.9 here) 17:39:30 msys2 has a 5.x version, yeah 17:39:39 although I think msys2 is having trouble building crawl these days 17:40:24 or at least I'm not sure if there are still problems with sdl or other contribs; I had heard reports of people needing to apply patches 17:40:31 <|amethyst> you mean, crawl is having trouble being built by msys2 these days :) 17:40:51 <|amethyst> I wonder if just updating our contribs would fix that 17:42:10 possibly, we tend to not update them until something is broken (or until we update to a new major version of SDL) 17:42:31 <|amethyst> gammafunk: I wonder how many security bugs we have in our outdated contribs :) 17:42:55 <|amethyst> probably fewer than we have in our own code... 17:42:56 we should ask the hackers known as 4chan 17:43:44 maybe I can try to update contribs and look at msys2 compilation at some point soon 17:43:56 I'm not sure how many windows devs we have left that actually use it 17:44:36 <|amethyst> we could insist that people use WS4L and cross-compile :) 17:44:58 <|amethyst> but I suppose there are a lot of people not using Windows 10 17:45:21 <|amethyst> s/WS4L/WSL/ # I guess that's the abbreviation they use 17:47:24 yeah, that would be cool if it worked in older windows versions 17:47:36 but if msys2 having trouble is just some contribs that need updating, that's not too hard to fix 17:48:31 <|amethyst> In some cases (the setenv thing for example), it might just be that we don't run 'configure' and instead use our generated makefile 17:48:38 i wonder why it's WSL instead of LSW 17:49:05 <|amethyst> amalloy: they've used that naming convention for a while 17:49:11 <|amethyst> Windows Services for UNIX for example 17:49:31 <|amethyst> I used the Windows NFS server once 17:49:48 <|amethyst> it ended up being less painful, and faster at run time, to just use SMB instead 17:49:48 maybe they're worried about confusion with Least Significant Word 17:49:59 Microsoft: Putting the name of a competitor before our name?! 17:50:06 <|amethyst> amalloy: I think it's more .... what gf said 17:50:14 yeah, my suggestion is clearly silly 17:50:40 <|amethyst> Windows S{ervices,ubsystem} for UNIX was abbreviated just "SFU" 17:51:14 <|amethyst> or "SUA" for the "Subsystem for UNIX-based Applications" 17:51:29 <|amethyst> but I think now "Windows" is actually part of the name 17:53:06 -!- Fixer_ is now known as Fixer 17:53:11 <|amethyst> I wonder if STL's mingw distro would work for building crawl? Not sure if it has Perl though 17:53:14 <|amethyst> it does have sdl2 17:53:18 <|amethyst> https://nuwen.net/mingw.html 18:03:28 <|amethyst> sadly, it appears STL won't be giving a talk at this year's cppcon :( 18:04:25 <|amethyst> FR: rename mons_felid_revive() to meow() 18:14:36 Unstable branch on underhound.eu updated to: 0.21-a0-200-gb89f83b (34) 19:14:48 did the setenv case get solved? That seemed kind of mysterious / system specific 19:30:01 advil: i can't help but think of nancy drew or hardy boys or something. solving setenv cases 19:30:19 the case of the missing setenv 20:21:54 -!- amalloy is now known as amalloy_ 20:49:26 -!- amalloy_ is now known as amalloy 22:38:01 -!- Chase is now known as ChaseSP