00:11:59 -!- bh is now known as Guest78005 00:22:09 well you might not want template metaprogramming copied and pasted by ME from STACK OVERFLOW (a reputable combination), but bloatcrawl does 00:38:37 Unstable branch on CRAWL.XTAHUA.COM updated to: 0.24-a0-471-g3302cd442e (34) 00:40:08 Stable (0.23) branch on CRAWL.XTAHUA.COM updated to: 0.23.1-82-g5129a83184 00:54:53 the absolute madman 01:20:55 Experimental (bcrawl) branch on underhound.eu updated to: 0.23-a0-1916-gb93c957c58 02:12:03 hello quick question. how long should it take to wield something from the floor? is 3/5 auts fine? it seems intuitive and in line with how quaffing/reading from the floor goes now. but i'm slightly worried about making it optimal to wield things up as a way of picking them up (and unwielding later when you would wait anyway, a la speedrunners waiti 02:12:03 ng for approaching enemies to drop items) 02:13:22 i'm working on this now. so if people have thought about this already, i'd be happy to hear about it 02:14:08 is there a function that can join a bunch of strings together with a separator? Like ['foo', 'bar', 'baz'].join(', ') => "foo, bar, baz" 02:14:33 It could just take as long as picking the item up. It's not like this inconveniences normal play, where you rarely want to wield something off the floor in a big hurry. 02:18:08 -!- amalloy_ is now known as amalloy 02:18:11 if it takes 10 aut then (i think, feel free to correct) it's better to unwield (3 aut) and then wield from the floor (10 aut) then to simply pick something up and then swap (15 aut). 02:18:41 ... it could take 12 auts? 02:18:42 obviously this sort of thing is not a big deal but it would be nice if the various interface options were all equally good time-wise 02:19:31 ah, there is join_strings in stringutil.h 02:19:36 it could. i guess i'm not sure whether this sort of thing is worth slapping a kind of unintuitive number on it 02:21:04 ...or where the balance is, or whether someone has figured out the elegant solution already 02:22:00 I think in normal play I would only pickup-wield a weapon with no monsters around (fight's done, doing analysis) and wouldn't even notice if it took > 10 auts because there are no monsters around to double-tap me. 02:24:23 alexjurkiewicz: join_strings looks incorrect: it ignores the sep argument 02:24:43 i know comma_separated_line works; i'd accept a PR to fix join_strings 02:54:35 yeah 03:19:00 -!- ProzacElf_ is now known as ProzacElf 03:24:04 Unstable branch on crawl.beRotato.org updated to: 0.24-a0-471-g3302cd4 (34) 03:51:15 Fork (stoatsoup) on crawl.kelbi.org updated to: 0.21.2-998-g1b46644ae2 04:36:13 -!- amalloy is now known as amalloy_ 07:00:55 advil: the plan was to decouple the cursor target state from the cursor position 07:09:33 one way to do this that shouldn't require huge refactors is to wrap GotoRegion in a RAII class with a stack, much like tiles_ui_control 07:11:04 then you can add instances of that before code that uses cgotoxy, and then make cgotoxy assert that the region was set via the RAII class, instead of setting it directly 08:01:10 actually, there should be no need to wrap GotoRegion, tiles_ui_control is the one to use; then cgotoxy can assert iff the region is MSG or STAT 08:14:42 -!- quadsar_ is now known as quadsar 08:55:31 03advil02 07* 0.24-a0-472-g7b9cff8: More travis dependency updates, this time for BUILD_ALL 10(33 seconds ago, 1 file, 1+ 0-) 13https://github.com/crawl/crawl/commit/7b9cff83cf45 09:02:15 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-472-g7b9cff83cf (34) 09:13:20 aidanh: in a9e2c0f7d088 I ended up wrapping the two prompt cases in tiles_ui_control and it works; it doesn't really deal with the fact that some parts of X key handling use mpr to print a status or error message 09:13:55 but local tiles is the only case where we can assume the player will be able to see that, so mpr is probably the wrong choice there 09:14:52 possible X views just need a one-line status box 09:17:59 *possibly 09:20:08 hm I think xenial made travis builds even slower 09:22:39 Stable (0.22) branch on underhound.eu updated to: 0.22.1-59-ge965b3aba3 09:23:37 or at least, the clang tiles build for some reason 09:51:36 -!- Guest78005 is now known as bh 09:52:55 03advil02 07* 0.24-a0-473-g7d61508: Another travis dep... 10(26 seconds ago, 1 file, 1+ 0-) 13https://github.com/crawl/crawl/commit/7d615089e716 10:02:20 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-473-g7d615089e7 (34) 10:52:22 The build has errored. (master - 7d61508 #11661 : advil): https://travis-ci.org/crawl/crawl/builds/554264795 10:52:45 progress: upgraded from failed to errored 11:21:39 Stable (0.23) branch on underhound.eu updated to: 0.23.1-82-g5129a83184 11:26:53 03advil02 07* 0.24-a0-474-g47c397e: Travis: Update mingw package names for xenial 10(44 seconds ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/47c397e05051 11:32:25 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-474-g47c397e050 (34) 11:40:51 does anyone feel strongly about whether we need to test absolutely everything on both gcc and clang in travis? 11:41:25 I might at least set the dgl builds to gcc-only 11:42:00 though I guess if some server somewhere is using clang, that might be a reason to test both 11:44:17 I'm not sure if any of our servers are building clang 11:44:20 *with clang 11:59:06 -!- amalloy_ is now known as amalloy 12:23:49 advil: re you're earlier question about ddoor hp, yes the bugged hp happens instantly 12:24:15 more specifically initially it has the correct hp but then the code in player-reacts.cc includes a sanity check on hp that recalculates it 12:24:24 and then sets it to too low a value since it has the wrong spellpower 12:24:46 yeah, I found the sanity check code; for ddoor in particular my inclination is that the sanity check is badly implemented, if it's even needed it should be saving the hp from the initial calculation, not recalculating it every time 12:25:04 as a prop that is cleared when ddoor expires, or something 12:25:06 right 12:25:12 that's exactly what my local patch is doing 12:25:12 I'm not sure how general that is 12:25:39 well it's a general issue for spells like tornado and ddoor 12:25:39 i.e. whether something like that would make sense for other cases -- maybe tornado 12:25:53 yeah, how general of a fix to make was basically my concern; I do think it's probably best that those spell use spellpower at time of casting 12:26:15 it's a general issue but iirc there was some past worry about making swapping enhancers mildly optimal? 12:26:19 shouldn't players then swap to |air? 12:26:50 swapping enhancers? 12:27:02 staves, like amalloy suggests 12:27:14 what's the scenario where you'd swap enhancers, or rather when would this swap occur 12:27:23 since probably holding something else is better after tornado has been cast 12:27:41 is it? what if you want to cast e.g. airstrike 12:28:28 I guess I'd see it as "you want to wield whatever's best for subsequent use of turns, and that might include more spell casting in the same school" 12:30:31 it might 12:31:09 or it could be something else 12:31:23 I'm not sure that the current mild pressure to stick with an enhancer if you are using it is meaningful though 12:32:02 yeah, I don't think those duration spells especially need this penalty as they already have the aspect of doing much less damage instantly 12:32:04 (probably if you can cast tornado none of this matters) 12:33:02 it certainly matters for exegesis, since if we require the enhancer to be active for subsequent turns 12:33:13 that ability won't work too well for duration-based spells 12:33:32 for those like tornado and dragon's call, that is; particularly the former 12:34:11 I think players would probably expect that the spellpower used is that of the time of cast, as well; it's not an easy aspect to communicate 12:35:39 another question I have is should I be using a prop for the ddoor thing, or should I be using one of these attributes 12:35:51 which I sort of realize we have and which seem similar to prop 12:36:18 yes, exegesis seems very different, when I was testing this invoc makes a big difference in spellpower 12:36:58 yeah, tornado was really bad when I used it; now it's not really necessary to change how some spells work due to one god ability, but I think this continued dependency on spellpower for those spells is surprising as a player 12:37:51 I don't love the idea of making exegesis have a special continued enhancement for those spells to 'fix' that if they otherwise continue to depend on spellpower after time of casting 12:38:06 props might be a better fit, since they make save compat simpler 12:38:24 ok, what's the criteria for using one vs the other? 12:38:36 no idea, I'm not sure I've ever used attributes :D 12:40:02 I mean props are extremely general and unconstrained 12:40:09 seems vaguely centered on god stuff 12:41:07 although I see stuff like temp mutations and searing ray 12:42:35 from 2014: !learn e wheals[2] s/$/, replace props with attributes 12:42:49 !blame2 wheals 12:42:50 wwwhhheeeaaalllsss 12:43:55 guess it's sort of nice to use that enum for indexing instead of making a key define 12:44:19 an enum might be less mistake prone? 12:44:21 since it's impossible for someone to be lazy and use the string directly instead of the key 12:44:27 yeah 12:45:41 I'm not sure from the logs that anyone knows when one is better 12:45:56 oh I guess I just sort of realized that attributes can only be ints 12:46:07 perhaps that's a good criteria 12:46:26 -!- amalloy is now known as amalloy_ 12:47:09 if you just want to store an int, just use an attribute (until wheals comes back riding a white horse to refactor props+attributes) 12:47:41 wheals: if you want to come back riding a white horse to refactor props and attributes, please feel free to do so at any time 12:51:42 The build passed. (master - 47c397e #11662 : advil): https://travis-ci.org/crawl/crawl/builds/554306329 12:54:56 libw32c.cc:582:29: warning: ISO C++11 does not support the ā€˜%Sā€™ gnu_printf format [-Wformat=] 12:55:04 I've always wondered about this when cross-compiling 13:27:18 Unstable branch on crawl.akrasiac.org updated to: 0.24-a0-474-g47c397e (34) 14:20:27 I wonder why WEBTILES=1 BUILD_ALL=1 builds sdl 14:21:05 what does BUILD_ALL do? 14:29:14 it's not documented but currently it builds every contrib (regardless of other build settings, I think) 14:32:17 oh, so your question was why does that build make the sdl contrib for a webtiles build even when sdl technically isn't a contrib for this build 14:32:23 yeah 14:32:39 !blame2 our_hacky_Makefile 14:32:40 ooouuurrr___hhhaaaccckkkyyy___MMMaaakkkeeefffiiillleee 14:32:51 I need to take a look at the cmake pr 14:42:18 lol someone wants an ascii mode for the webtiles minimap 14:42:35 that is some dedication to ascii 14:48:55 ascii immersion is a real and powerful playfeel 15:01:56 advil: I guess one limitation of attributes we seem to have is that there can only be 256 of them 15:02:06 oh heh 15:02:38 little did they know we would still be adding to it 20 years later 15:03:06 I recently hit one of those where strings were being serialized with a length that was capped at 16 bits 15:33:05 another point against using attributes: recompiling every source file when you add a new attribute 15:54:36 ah, looks like bvc has this issue as well 15:55:12 "play on version 0.23, which is the least optimal version because of the dispersal trap mechanism mechanic, which will will be removed in 2021 by developer amerloy." 15:55:59 oh no, they know our names 15:56:48 where does this insightful commentary come from? 15:56:55 reddit ofc 15:57:01 yeah, silly of me to ask, I guess 15:57:02 I suspect it's a drunk post 15:57:08 but it's kind of funny 15:57:26 https://www.reddit.com/r/dcss/comments/c8pe1w/playing_0171_because_of_linux_package_system_any/esqs3jg/ 15:57:59 also did you see https://www.reddit.com/r/dcss/comments/c95jty/old_vs_new_part_2_of_the_sif_muna_rant/ 15:58:36 no I don't read/post/use the reddit these days 15:58:51 unless someone mentions me for something about the bots 15:59:06 ah, it's dynast again having actually played sif since their last post on this topic 15:59:43 well I have had them blocked on discord for ages now due to previous antics 16:00:49 it's good to use various filters to preserve sanity when interacting with players, I've found over the years 16:03:56 gone are the good old days of 2013 when not quite so many people were so very mad about video games that it just made them into awful people when chatting online 16:03:56 to be fair, I think thinks were a bit more direct in ##crawl-dev when we had a lot of devs chatting here, but not too long after I started contributing we had a major blowup and 1kb/dracoomega both left 16:04:05 yeah, those were different days, I think for the internet as a whole 16:04:11 yeah 16:08:32 well, if you cast ddoor with e.g. staff of death and then swap that off you can immediately see your HP drop if the spellpower drop is high enough 16:09:20 I guess I really should either make a general fix that allows recording spellpower at time of casting for relevant spells or just not change anything 16:09:47 seems that the only affected spells are ddoor, bvc, tornado, dragon's call 16:09:58 oh, otr? 16:10:16 yeah, otr as well 16:10:46 ah, searing ray 16:10:52 given that list I wonder if it should be spell by spell 16:11:22 meaning the decision as to whether initial or current spellpower should be considered should be determined on a spell by spell basis? 16:11:50 the implementation, in that it's really the downstream calculation of spellpower (whatever that is) that should be saved 16:11:55 though I haven't looked at how spellpower is used aside from ddoor 16:12:27 oh, so don't save spellpower, save the information we derive from it? 16:12:59 yeah, that's what I was thinking - makes it more transparent to understand after the fact 16:13:01 that would probably be more natural 16:13:13 for ddoor at least that makes sense, since what you need is the hp value 16:13:15 and is how I implemented my current ddoor patch since that seemed to make the most sense 16:13:20 yeah 16:13:27 bvc has possibly two things though... 16:13:40 ah 16:13:55 yeah, escape chance for monsters and constriction damage 16:14:30 not that it having two things invalidates that approach or anything 16:14:41 I just sort of feel that using spellpower at time of cast is more natural from player perspective and not actually worse gameplay 16:14:53 also consider how we don't e.g. make your summons worse if you switch off staff of summoning after you cast 16:14:59 nor conjure ball lightning 16:15:10 nor do we degrade the duration of your damaging clouds, etc 16:15:46 cbl should record the damage in the ball lightning at the time it's created 16:16:29 yeah, encode in their hd 16:17:05 so really you could look at that spell and say that players switching off their enhancer shouldn't get as good cbl explosions 16:34:53 well I consulted a local faerie, who was also in the camp of arguing that gameplay is better if we don't encourage swaps like we would arguably be doing with recording either spellpower or spellpower-derived stuff at time of casting 16:35:13 however there is the clarity issue; most players would probably assume they get the spellpower at time of cast 16:35:46 and if we didn't change anything about how this currently works, at least it would be wise to better communicate what happens 16:36:06 you could file this ddoor thing under "won't fix" as well, if we don't like swap encouraging fixes 16:36:25 if e.g. Exegesis is just not as good under a few spells, that's really not too big a deal after all 16:44:56 I think ddoor should be changed, since from the player's perspective their health is set once on cast 16:45:43 that would be reasonable enough I guess 16:46:25 and the current behavior is probably not even intentional? 16:46:25 for just that spell if swapping is a problem then imo it's a problem with ddoor in its current instance, not swapping 16:47:05 I sort of just dislike our inconsistency about encouraging swaps for some kinds of spells (e.g. most summons, cbl, most other spells that set a duration) but discouraging it for others (tornado, dcall, searing ray, etc) 16:47:24 I guess an alternative for ddoor might be to make it spellpower independent and do max(10% of current health, 1) 16:47:33 does the duration depend on spellpower? 16:47:42 yes...I think 16:48:00 yeah it does 16:48:40 and yeah it would probably have to be more like max(5% of current health, 1), but that's another option for a fix 16:49:08 hrm 16:49:17 it would probably still require us to store HP though 16:49:29 I don't exactly know what cases trigger that code in player-reacts.cc that set hp 16:49:48 but obviously...oh, it would have to be e.g. 5% of current max hp 16:49:53 yeah, I wonder if there's weird stuff that sanity check is guarding against 16:50:00 right, max hp 16:50:20 that does seem fairly reasonable I guess 16:50:27 also, I've literally never used ddoor, so I was actually wondering how much difference in practice the variation in hp values made; even with massive unrealistic spellpower I couldn't get it very high 16:51:48 well, 16 hp compared to 6 hp is a big deal (you can possibly survive a smite in .e.g tomb) 16:51:57 ah, smiting is a good example 16:52:06 but yeah the ideal way to use that spell is to pair it with reviv or to end ddoor in safety 16:54:27 -!- amalloy_ is now known as amalloy 16:55:22 yeah, my (not extremely attuned) endgame intuition is that every possible hp I could get it to is basically, if you don't get out of danger and survive, you got lucky 16:55:34 s/endgame/lategame 17:48:17 -!- amalloy is now known as amalloy_ 18:21:45 Unstable branch on underhound.eu updated to: 0.24-a0-474-g47c397e050 (34) 18:24:37 man the pace of debugging travis is kind of infuriating 18:45:27 -!- Tiobot is now known as Guest18029 18:57:15 git log 18:57:19 woops 18:57:39 03gammafunk02 07* 0.24-a0-475-g5b41c6f: Fix Death's Door HP at time of cast (Wise Wolf) 10(3 hours ago, 4 files, 13+ 11-) 13https://github.com/crawl/crawl/commit/5b41c6f1980f 18:58:00 I wrote up a little bit about the spellpower-swapping issue in that commit 18:58:54 I do think it's probably a good idea that we either go with all spells not caring about spellpower after the turn of casting or all spells caring about it 18:59:23 it doesn't really make sense to discourage swapping to a weapon or something else under tornado yet encourage that for e.g. freezing cloud or when using summons 18:59:29 tornado is even a cloud spell! 19:00:03 bvc was even designed with the idea of casting it and then swapping to a weapon to hit the things you affect (in terms of ideas mikee proposed) 19:00:26 and swapping to a weapon to hit things your summons hit is also a thing 19:01:19 I get arguments against swapping since most of it is just tedious, but for sake of clarity we should be consistent about it either way 19:01:41 tornado's clouds are almost entirely decorative fwiw 19:02:00 yeah 19:03:20 but that is another spoilery thing a lot of players don't know about; you can step on dissipating tornado clouds without harm even though there's a warning 19:03:28 if you kill lom, for instance 19:03:38 I think you can get that when you are the caster as well 19:04:00 if your tornado duration has expired, but you might only get that warning if you kill lom or air elementals 19:05:13 it seems that commit will update you.attribute[ATTR_DEATHS_DOOR_HP] every turn, which seems inefficient. I guess pretty minimal real world impact, but wonder if there is some better way to implement the check so it only fires when DUR_DEATHS_DOOR goes from non-zero to zero 19:05:31 sorry, not update the attribute, just check it every turn 19:06:04 what kind of inneficiency could checking one int introduce? 19:07:05 the point of that check is to cover cases where things could try to affect player hp that the normal restrictions on damage wouldn't cover 19:08:31 but that's just going to happen any time you want to have a kind of sanity check like that; we do that stuff a lot, for instance every time you hit an ASSERT condition 19:09:46 not that it might not be possible to refactor said code in some way, but if you think that check is bad, you must think every ASSERT we have is bad as well 19:23:16 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-475-g5b41c6f198 (34) 20:02:34 that's fair 20:02:38 const int undead_modifier = you.undead_modifier == US_UNDEAD ? -2 20:02:39 : you.undead_modifier == US_HUNGRY_DEAD ? -1 20:02:41 : 0; // US_ALIVE & US_SEMI_UNDEAD 20:02:55 is there a better way to write this sort of matching code? 20:50:52 is it possible to use coloured text with ui::Text ? 20:51:10 I've tried creating the element with a format_string.to_colour_string but I just get raw tags in the output 20:53:42 ah. I have to pass in format_string as-is! 21:32:00 New branch created: pull/1095 (1 commit) 13https://github.com/crawl/crawl/pull/1095 21:32:00 03advil02 07https://github.com/crawl/crawl/pull/1095 * 0.24-a0-475-g8f12b30: Travis modernization 10(12 hours ago, 4 files, 99+ 101-) 13https://github.com/crawl/crawl/commit/8f12b309f999 21:58:49 -!- amalloy_ is now known as amalloy 22:00:54 alexjurkiewicz: that's a switch/case 22:01:51 amalloy: wouldn't that result in just as many code lines? and then I couldn't mark the variable as const, right? 22:03:32 all correct, but that's kinda the C++ way to check enum cases 22:03:48 or at any rate the C way. maybe modern C++ experts know something i don't 22:30:06 -!- amalloy is now known as amalloy_ 23:22:30 advil: aidanh: keen to hear if there is a more compact way to structure this UI code: https://github.com/Hellmonk/bloatcrawl2/pull/7/files#diff-ad8b7fb160bc6b581570b5f276bb7a10R720