01:48:34 <11O​dds> Re: spells etc alerting monsters. I did know about this one for spells (but not ranged) from playing experience, and find it quite impactful - I think most of all casters of Dith would love it to be removed, as their noise often doesn't alert things even in LoS. I agree it's pretty odd. 01:50:34 <11O​dds> My guess is that it's a pretty significant buff to stealthy play, especially with Dith and in the late game (where monster density in important situations tends to be higher), and that this is a good thing 🙂 04:34:07 Experimental (bcrawl) branch on underhound.eu updated to: 0.23-a0-5261-gd9800d219b 16:21:20 -!- terminaldweller_ is now known as terminaldweller 17:39:48 03hellmonk02 07[smallvaults] * 0.34-a0-1916-g1fdcbb2241: fix a vault 10(2 minutes ago, 1 file, 1+ 0-) 13https://github.com/crawl/crawl/commit/1fdcbb2241ee 17:39:48 Branch pull/4998 updated to be equal with smallvaults: 13https://github.com/crawl/crawl/pull/4998 18:27:29 <09h​ellmonk> another oddity I'm noticing in the monster perception code: unnatural monsters actually have better perception while dormant than wandering if you aren't their foe 18:28:06 <09h​ellmonk> because the perception bonus for wandering requires you to be their foe, but dormant monsters always get a bonus while asleep 18:28:26 <09h​ellmonk> I'm kind of curious what this function looked like in old versions 18:32:38 <09h​ellmonk> this specific part seems to be very old (at least 0.8) 18:34:43 <09h​ellmonk> another "big" change from old versions (not really): fewer monster intelligence types. Monster intelligence used to be a value from 0-4, now it's 0-2. Most monsters lost 4 perception from this, and formerly "high intelligence" monsters lost 8 18:35:48 <09h​ellmonk> otherwise the function appears basically unchanged from 0.8, the only other differerences I noticed were removal of sense invisible (gave 5 perception per level, I did not check how many levels there were) and removal of the corona perception bonus (because this was changed to a stealth penalty) 19:03:27 New branch created: stealthdisplay (1 commit) 13https://github.com/crawl/crawl/tree/stealthdisplay 19:03:28 03hellmonk02 07[stealthdisplay] * 0.34-a0-1933-gd8a37af9f8: Display monster notice chance 10(5 minutes ago, 6 files, 71+ 35-) 13https://github.com/crawl/crawl/commit/d8a37af9f8cf 19:03:29 New branch created: pull/5011 (1 commit) 13https://github.com/crawl/crawl/pull/5011 19:03:29 Branch pull/5011 updated to be equal with stealthdisplay: 13https://github.com/crawl/crawl/pull/5011 19:18:08 <09h​ellmonk> So after looking at this, I would suggest the following: 1) nonliving monsters should always get their +10 perception whether dormant or not (this seems clearly a bug imo) 2) wandering monsters should get a separate bonus unrelated to their foe, to compensate for removal of guaranteed alerts. This bonus should probably scale with HD to avoid disrupting earlygame stealth balance. 19:18:41 <09h​ellmonk> There are a bunch of things we could do beyond that, for example we could introduce a flag (M_PERCEPTIVE) that raises monster perception and/or make the intelligence bonus larger to increase the range of monster perception values throughout the game. I don't think this is necessary, but there is probably a way to make it interesting. 19:21:52 <09h​ellmonk> Likewise, we could adjust monster shout chance, the chance for a monster to pinpoint noise as being made "by you" (which depends on distance), scale monster perception for wandering monsters with distance to the player (so it's easy to juke from across the screen but hard to take actions if they're close to you)... but I think most of these things aren't necessary or are overly complicated 19:28:52 <09h​ellmonk> It's hard to judge how much guaranteed alert removal impacts "normal" stabber play (seems more impactful for weird ass hybrid characters that train a lot of stealth for some reason), so probably don't need much compensation? 19:29:56 <09h​ellmonk> I guess there's also the option of making all the guaranteed alert things just force an additional stealth check instead, but that seems bad. Could raise ranged weapon noise? 19:30:00 <04d​racoomega> The impression I had with (1) wasn't that they were supposed to be 'more perceptive in general' but that they were supposed to be 'less asleep'. (Though having more perception while asleep than awake definitely feels incorrect.) I think giving some ad-hoc subclass of monsters better perception with a new flag is probably pretty opaque unless it's using an obvious existing class in some way. 'All uniques?' Or giving monsters 19:30:00 with sInv higher perception in general could actually make sense (and when I finally get to those long-threatened invis changes, I'd actually been planning to rename sInv to something slightly more general anyway...). The only thing there is that those are already more resistant to stabbing in a relatively strong way, so it might just be piling more of it on. I could agree to making wandering monsters not care about their foe for perception purposes, 19:30:01 since it's already hard to tell if they're wandering with MHITNOT or MHITYOU. (I am actually not certain this is an in-game way to tell, and it's actually random when alerted by noise from out of LoS) 19:30:52 <09h​ellmonk> well, there will be an ingame way to tell now (because it will display in xv chance to notice you) 19:31:52 <04d​racoomega> Seems bad in what way? (I mean, it would probably be bad to apply it to the specific subset of actions that are currently covered by alert_nearby_monsters(), since there's wierd and arbitrary gaps in that, but I could see some rationale for 'Doing anything besides moving makes it slightly more likely for your stealth checks to fail that turn') 19:31:59 <02M​onkooky> 'have to x-v everything to check a specific number' seems not good 19:32:11 <04d​racoomega> I mean, yes, but that seems even worse in some ways if you can check, but can't know if there's any point in checking 19:32:36 <04d​racoomega> So it seems fine if a wandering yak is a wandering yak 19:32:51 <09h​ellmonk> removing the distinction entirely would be fine, though likely a fairly big stealth nerf. For nonliving monsters, I'd also be fine with removing their perception bonus or making it smaller if it's too punishing for them to always have +10, the main thing is it's weird as hell that they get less perceptive when wandering. 19:33:05 <04d​racoomega> Yeah, I agree with that for sure 19:33:09 <09h​ellmonk> yeah I agree re: it's bad to have to check wandering monsters individually 19:33:47 <04d​racoomega> (Realistically, I am unsure how important it is that nonliving monsters are 'less asleep' when they otherwise appear to be just as asleep for all purposes) 19:34:14 <04d​racoomega> Asleep enough to get stabbed! 19:34:37 <02M​onkooky> it's pretty opaque that this is a thing, it's true 19:34:50 <09h​ellmonk> maybe if we explain it that's fine? Worried about complexity if we're going to actually display a number for perception chance. "Oh this guy has a 23% to notice me but this subset of my actions will actually trigger that twice, let me calculate this real quick" type of thing. I'd rather just have those actions make more noise or whatever I think 19:36:04 <09h​ellmonk> but there's lots of angles to tackle this from, I don't think it's unreasonable to try extra forced stealth checks if there's a reason you think that's a good approach 19:36:39 <02M​onkooky> think even if you were x-ving everything it'd be difficult to backtrace the reason that some sleeping monsters were more perceptive to them being nonliving, so I'd be in favor of just removing the bonus 19:36:52 <04d​racoomega> Well, I don't have decisive feelings on the 'correct' approach (and will need to see from actual playtesting how big the magnitude of this change ends up being in the first place) 19:38:00 <09h​ellmonk> this might be a good reason to remove and replace with a monster flag (which could then be displayed). Actually, do we display master archer or fighter flags yet 19:38:09 <04d​racoomega> I can imagine this actually being a large enough change to warrant some mechanism of making some actions more obvious that they'd otherwise be; just not the current one 19:38:12 <09h​ellmonk> or do some monsters just "randomly" have better accuracy 19:38:38 <04d​racoomega> I don't think that's more 'random' than monster HD or damage itself is 19:39:13 <04d​racoomega> (In other words, I don't think monsters having higher chance to detect the player for any particular reason will lead to confusion when examined) 19:39:14 <09h​ellmonk> well, it's obfuscated in a similar way to the hidden dormant monster bonus I think 19:39:22 <09h​ellmonk> yeah, agree 19:39:35 isn't master archer/fighter fairly obvious from the monster's name usually? 19:39:38 <09h​ellmonk> or rather, I don't think it's more confusing than existing hidden properties 19:39:49 <09h​ellmonk> imo not really 19:39:54 <04d​racoomega> Fighter probably isn't (but I really don't think it matters) 19:40:06 <04d​racoomega> We're showing the aggregate effect of their stats 19:40:09 <04d​racoomega> I don't think it's critical how they're calculated 19:40:52 <04d​racoomega> (And like, the issue with different wander states isn't that the specific math isn't conveyed, but rather that it varies based on something opaque enough people might not realize it exists. But a yaktaur captain is a yaktaur captain.) 19:41:04 <02M​onkooky> Hmm. I think but am not sure that context makes this somewhat different 19:41:10 <09h​ellmonk> for example, frost giants, fire giants, and titans are fighter but stone giant is not 19:41:36 ah 19:42:15 <02M​onkooky> you somewhat have to learn 'how murdery is this monster', largely through experience 19:42:38 <02M​onkooky> and it's often something observable by how quickly it's killing you 19:42:58 <09h​ellmonk> you can sort of get close if you assume "warrior classed in a d&d sense humanoids" have it, but there are enough exceptions to make it not obvious (but also it doesn't matter much anymore because monster hit chance is displayed) 19:43:12 that part, at least, isn't really relevant to flags 19:43:55 <02M​onkooky> I don't know that you're going to be getting enough obvious feedback about shit waking up to even get a vague understanding about perception while sleeping 19:45:57 * geekosaur suddenly wonders if a modified qw could track that kind of thing 20:06:44 <04d​racoomega> Wait, looking at monster perception code more directly, it isn't even nonliving monsters that get a perception bonus while asleep. It's everything but natural (ie: it includes demons, too, who by all accounts sleep perfectly normally) 20:07:04 <04d​racoomega> So that's extra incoherant, imo 20:08:24 <04d​racoomega> (I had been going to say something along the lines of "I could actually see nonlivings having higher perception in general due to how many of them are 'constructs' that are seemingly intended to guard places. But there's an awkward split in what that holiness means between things you'd expect to be extra-alert and things that are basically natural phenomena." However it's apparently even wierder than that.) 20:10:33 <04d​racoomega> @hellmonk (Also, the way you've organized that code, I think it will crash if you xv the memory of an out-of-LoS monster that has moved) 20:10:51 <04d​racoomega> Or possibly just give you the perception of a different monster 20:13:50 <09h​ellmonk> it might need an !mi.pos.origin() check but we do use monster_at elsewhere (eg for zin recite susceptibility) 20:19:20 <04d​racoomega> Okay, right, my bad about the crash part. Somehow I was so swept up in 'checking the monster at a given coordinate out of LoS' that I didn't notice the immediate null check. However, it is definitely not guaranteed to be reporting stats on the same monster. In fact, it can be used to determine if there is still a monster at that out-of-los tile at all. (This also works with recite, now that you point it out) 20:19:59 <04d​racoomega> (I sure do hope to refactor monster_info away at some point >.>) 20:21:44 <09h​ellmonk> hmm, that seems bad 20:22:07 <09h​ellmonk> not really sure how to get monster perception into a monster info object cleanly though 20:22:41 <09h​ellmonk> maybe I can just add another function for that 20:22:44 <04d​racoomega> Yeah, the way things are structured makes it hard to not have duplicate code for lots of things. (A bunch of targeters do directly examine the monster_at() but this is safe for things in LoS) 20:22:58 <04d​racoomega> I'd be happy enough to only display this chance for a monster actually in LoS, though 20:23:42 <04d​racoomega> Since it's already not guaranteed to have the same chance the next time you walk into sight of it 20:24:01 <04d​racoomega> ....except I guess that means it doesn't work with ?/m -.- 20:24:34 <09h​ellmonk> well I can try to refactor tomorrow and get it into monster info proper 20:24:48 <09h​ellmonk> this whole system is rather annoying... 20:24:56 <04d​racoomega> It is 20:25:57 <04d​racoomega> I talked a bunch about wanting to refactor this away here https://ptb.discord.com/channels/735056636644687913/747522859361894521/1451673705607594245 (No obligation to read it all or anything, but I did explain a bunch of reasoning here) 20:26:52 <04d​racoomega> But a huge obstacle is the way monster inventories work (and how monsters never 'own' their own items, but monster_info do). And changing that is, I think, actually much more complx. 20:27:52 <09h​ellmonk> is ?/m going to get this info anyway btw? I currently don't have it display unless the monster is asleep/wandering or equivalent. Does ?/m treat monsters as asleep? 20:28:03 <04d​racoomega> Oh, huh. I... I actually have no idea. 20:28:19 <04d​racoomega> I guess it would be ambiguous and therefore maybe not helpful 20:28:45 <04d​racoomega> So maybe it's fine to have only for in-LoS monsters at the moment and consider that to still be a meaninful improvement 21:14:25 03hellmonk02 07[stealthdisplay] * 0.34-a0-1934-g61040c9555: use monsterinfo instead 10(61 seconds ago, 4 files, 36+ 5-) 13https://github.com/crawl/crawl/commit/61040c95557e 21:14:26 Branch pull/5011 updated to be equal with stealthdisplay: 13https://github.com/crawl/crawl/pull/5011 21:14:35 <09h​ellmonk> currently resolves the monster foe distinction by lying (always reporting the +15 bonus) 21:20:53 03hellmonk02 07[stealthdisplay] * 0.34-a0-1935-g0257602b49: properly flag dormant mons 10(67 seconds ago, 1 file, 2+ 2-) 13https://github.com/crawl/crawl/commit/0257602b49ac 21:20:53 Branch pull/5011 updated to be equal with stealthdisplay: 13https://github.com/crawl/crawl/pull/5011 21:21:18 <09h​ellmonk> since this effect is rather large, it would be good to unify (either by giving whatever bonus formula we decide on regardless of monster foe, or exposing monster foe in some more obvious way) 21:36:48 <04d​racoomega> Yeah, I am going to adjust the formula in some way (still debating what) and will make sure to update code to match 22:46:35 New branch created: pull/5012 (1 commit) 13https://github.com/crawl/crawl/pull/5012 22:46:36 03tianmaster02 07https://github.com/crawl/crawl/pull/5012 * 0.34-a0-1933-g78ed46f5ac: Add the function of obtaining spell damage strings 10(9 minutes ago, 1 file, 28+ 0-) 13https://github.com/crawl/crawl/commit/78ed46f5accf 23:48:40 <08o​____0> @wizardike the undefined static bool _is_torch(tileidx_t basetile); in ffbeda6 is breaking console builds btw