00:22:48 Unstable branch on cbro.berotato.org updated to: 0.28-a0-1415-g7c84da036a (34) 00:54:28 Monster database of master branch on crawl.develz.org updated to: 0.28-a0-1415-g7c84da036a 01:33:35 Fork (bcrawl) on crawl.kelbi.org updated to: 0.23-a0-4506-g453a05f5f4 04:22:36 Experimental (bcrawl) branch on underhound.eu updated to: 0.23-a0-4506-g453a05f5f4 09:05:56 03PleasingFungus02 07* 0.28-a0-1416-g082bef1: Remove many diverse spells (dilly) 10(3 minutes ago, 1 file, 2+ 2-) 13https://github.com/crawl/crawl/commit/082bef1587f6 09:15:37 I think I found a bug with mut pots 09:16:12 So from my understanding mut pots should at minimum remove 2 existing muts right? 09:17:19 I had one existing mutation before drinking the pot (teleportitis) and after drinking it I had new mutations (low mana, scales) but I did not lose the teleportitis (I checked, it was not lost then re-added) 09:17:22 Unstable branch on crawl.kelbi.org updated to: 0.28-a0-1416-g082bef1587 (34) 09:18:01 dump: https://cbro.berotato.org/morgue/sauken/sauken.txt 09:21:26 !ttyrec sauken 09:21:28 788. sauken, XL27 GnHu, T:84372: https://cbro.berotato.org/ttyrec/sauken/ 2021-12-29.19:02:03.ttyrec.bz2 2021-12-31.14:22:38.ttyrec.bz2 2021-12-31.16:10:25.ttyrec.bz2 2021-12-31.21:22:25.ttyrec.bz2 2021-12-31.22:05:55.ttyrec.bz2 2021-12-31.22:29:54.ttyrec.bz2 2022-01-01.16:53:38.ttyrec.bz2 09:21:46 !lm sauken -ttyrec 09:21:47 13250. sauken, XL16 NaEn, T:32460 (milestone): https://cbro.berotato.org/ttyrec/sauken/2022-01-07.15:41:13.ttyrec 09:23:51 Gammafunk explained to me that mut pots have a chance to fail on removal 09:23:53 attempt 09:24:03 https://github.com/crawl/crawl/blob/master/crawl-ref/source/mutation.cc#L2284 09:24:43 right, it's not a bug, but "intended" for mutation removal that there's innate failure, and in fact the loop has multiple random ways that it can fail to process mutation removal 09:26:25 first aspect is a flat 1/1000 chance to abort, second aspect is a random chance to "ignore" when the loop finds you happen to possess a random mutation it chose 09:26:25 despite this mutation being eligible for removal, there's a chance that it will continue the loop, starting the random selection process all over again, and this chance is based on the mutation's weight in the mutation pool 09:27:31 @kate @PleasingFungus Are you aware of these failure chances for mutation removal, as seen in `delete_mutation()` at mutation.cc:2286 and mutation.cc:2318? 09:27:51 I might have known about these in the past, but honestly if I did, I've completely forgotten that the mutation deletion code does this 09:27:57 <06a​dvil> that 1/1000 thing is not adding much 09:28:40 @advil Yeah, but notice how the possible mutation to remove is chosen completely at random? It's not based on the character 09:28:54 talking line 2289 09:29:13 so it's choosing a mutation completely at random each time, then checking if you have it 09:29:33 it will hit many mutations you don't even have, giving that 1/1000 chance an opportunity to hit each time 09:30:02 <06a​dvil> yes, very odd 09:30:08 <06a​dvil> I don't think the mismatch case applies to mut potion deletion (only to the good mutation addition) 09:30:09 <10P​leasingFungus> i know nothing about this code 09:30:12 <10P​leasingFungus> sounds like a nightmare tho 09:30:36 <06a​dvil> I think I might have refactored it once but that was in a "don't change the behavior" mode of working 09:31:03 <06a​dvil> I give 95% odds that literally no one editing the potion calls has ever remembered at that time that they are affected by this 09:31:03 anyhow, this seems a bad way for mutation removal to actually work, but I confess to not really having thought through either the structure of the loop nor whether there's goodness to have random failure gameplay wise 09:31:10 haha 09:31:13 plausible 09:32:51 <06a​dvil> I think this randomness stuff might make more sense for actual random mutation gain/loss from malmutate or we 09:32:51 <06a​dvil> or mut potions as they were 09:32:51 possible, since malmutate has no other thing to check against, like willpower 09:34:26 <09h​ellmonk> Just rewrite the mut system from the ground up in 0.29 09:34:28 <09h​ellmonk> Ez 09:34:38 <10P​leasingFungus> think you'd need to have a goal first 09:34:42 <10P​leasingFungus> a design 09:34:50 I've been looking at it for like 5 minutes and I can't really make heads or tails of it lol 09:35:08 Seems to try to cull stuff that shouldn't be removed and then I see a line like this 09:35:28 if (mismatch && (disallow_mismatch || !one_chance_in(10))) continue; 09:35:34 And I'm just like wtf 09:35:49 welcome to crawlcode 09:36:38 <10P​leasingFungus> old crawlcode loved that style 09:36:46 <10P​leasingFungus> polymorph works similarly 09:37:14 <06a​dvil> I'm not sure there's an old/new distinction for how random checks are used in boolean expressions 09:37:16 <10P​leasingFungus> various kinds of item generation 09:37:19 <06a​dvil> but it's definitely something I had to learn 09:39:17 <10P​leasingFungus> hm, not really what i meant 09:39:17 It would make sense to me for mut pots go down another (simpler?) pathway so that the parameters set forth in potions.cc are actually implemented in practice 09:39:17 <10P​leasingFungus> there's a category of problem "choose a random item from a large set, and only some items from that set are valid" 09:39:17 <10P​leasingFungus> old crawlcode tends to solve that problem by choosing an unfiltered item from that set repeatedly, until either a valid item is found or we run out of retries 09:39:29 <10P​leasingFungus> newer code tends to build up a filtered set and then choose a random item from that set 09:39:53 That makes a bit more sense 09:39:54 <10P​leasingFungus> polymorph classic vs new polymorph (as used by /poly) is a good example of the distinction 09:40:01 <10P​leasingFungus> we still use both, of course 😛 09:41:08 to be fair, there isn't a huge issue with that, it's just a bit janky if you aren't used to it and it leads to lots of do { } while () which is usually frowned on 09:42:03 <10P​leasingFungus> i'd say the issue is "it's harder to understand and reason about, and sometimes it doesn't work" 09:42:13 <10P​leasingFungus> 😛 09:42:24 <06a​dvil> oh, yeah I wasn't thinking about the overall loop, just the quoted code 09:42:37 <10P​leasingFungus> obviously not so huge an issue that we haven't been able to live with it for the past, uh, twenty-plus years 09:43:08 <06a​dvil> yes, it's very hard to infer actual probabilities from this kind of loop 09:43:21 <06a​dvil> I think it's a better fit for things like dungeon or randname generation though 09:43:35 oh that too 09:43:51 <10P​leasingFungus> much like the old classic crawl pattern: if (one_chance_in(10)) return CHOICE_A; if (one_chance_in(7)) return CHOICE_B; if (random2(23) > 5) return CHOICE_C; ... 09:45:42 I mean, it also doesn't help that modern C++'s std::copy_if & co is janky as all heck 09:45:42 <10P​leasingFungus> advil: right, the one_chance_in(10) bit is another classic feature of those old crawl algorithms that i forgot to mention, 'soft retry limits' or 'easing'. same basic idea tho 09:45:42 <10P​leasingFungus> and yeah agree that it fits a lot better for dungeon/randname generation 09:45:42 <10P​leasingFungus> where players have fewer expectations 09:45:42 <10P​leasingFungus> perryprog: i don't understand the relevance, sorry 09:45:42 <10P​leasingFungus> also i don't know what that function is 09:45:42 That's the way cool people filter lists 09:45:42 it's the equivalent of .filter in other languages 09:45:42 <10P​leasingFungus> sounds like you assume that we started with a list in the first place 09:45:42 <10P​leasingFungus> usually we start with an enum 09:45:42 <10P​leasingFungus> and are building a list of valid enum values 09:45:42 er, yes, not actually related to the code we're talking about in this case 09:46:25 <10P​leasingFungus> sounds like a nice function though, except that apparently it's bad 09:46:29 <10P​leasingFungus> but aside from that 09:47:05 Sorry, back on topic :P 09:48:01 <10P​leasingFungus> i guess the topic is 'let's make delete_mutation not bad' 09:48:05 <10P​leasingFungus> which sounds viable 09:50:06 <10P​leasingFungus> wow, i'm reading the code now, and this should be illegal 09:52:39 <09g​ammafunk> @PleasingFungus you'll be happy to know that this type of mutation deletion failure can happen for evoluation/devolution mutations removing themselves, too 09:52:51 <09g​ammafunk> which I guess is sort of obvious, but it's funny to me, still 09:53:04 <10P​leasingFungus> lol 09:53:30 <10P​leasingFungus> hm 09:53:34 <10P​leasingFungus> @gammafunk are you sure about that? 09:53:55 <10P​leasingFungus> doesn't this failure only apply calling delete_mutation on a random mutation type? 09:54:33 <10P​leasingFungus> also, here's a trivia question for the crowd: if (you.mutation[mutat] == 0 && mutat != MUT_STRONG && mutat != MUT_CLEVER && mutat != MUT_AGILE && mutat != MUT_WEAK && mutat != MUT_DOPEY && mutat != MUT_CLUMSY) { continue; } Why does this check exists? Hint: it dates back to before 09:54:34 2007 09:55:28 <09g​ammafunk> yeah, I looked into that, and it seems that deletion of muts in a way targeted for good/bad where the mismatch thing would be relevant only happens for Zin wrath 09:56:12 <09g​ammafunk> oh, yes, you're correct 10:01:05 Were those stat change muts an old way of applying racial bonuses? 10:01:10 idk 10:03:04 <10P​leasingFungus> i believe these were from the period of "potion of gain str" (and dex, and int) 10:04:38 How do those mutations even get removed if it's supposed to break? 10:07:13 The quoted code means that you can select one of those mutations even if it's already 0. 10:07:19 Unstable branch on crawl.akrasiac.org updated to: 0.28-a0-1416-g082bef1 (34) 10:08:06 There are 2 you.get_base_mutation_level() != 0 checks which do have to pass, though. 10:08:37 I don't know when, but this code has certainly become more complicated with DCSS. 10:15:34 Hmm, does that mean that my previous mutation pot failed to remove the one mutation I had twice 10:15:41 I'm assuming I rolled the 2 instead of the 3 10:15:43 Ouch 10:17:23 Should Usk piety be gained for the damage done by {spectral} weapons? 10:17:23 The important thing is that a mutation potion has a chance to do nothing at all. It's not easy to calculate what it is, but it's there. 10:17:24 <12e​bering> no 10:17:33 <12e​bering> well, not the spectral half 10:18:11 Darn :-) 10:48:20 03PleasingFungus02 07* 0.28-a0-1417-g8ce13c4: Simplify delete_mutation() (gammafunk, Sauken) 10(8 minutes ago, 4 files, 68+ 98-) 13https://github.com/crawl/crawl/commit/8ce13c4dff15 10:48:20 03PleasingFungus02 07* 0.28-a0-1418-ged6f2ea: Remove a misleadingly named function 10(2 minutes ago, 2 files, 2+ 15-) 13https://github.com/crawl/crawl/commit/ed6f2ea20275 10:51:45 Unstable branch on crawl.kelbi.org updated to: 0.28-a0-1417-g8ce13c4dff (34) 11:02:24 04Build failed for 08master @ 8ce13c4d 06https://github.com/crawl/crawl/actions/runs/1668647403 11:06:47 Unstable branch on crawl.kelbi.org updated to: 0.28-a0-1418-ged6f2ea202 (34) 11:11:16 04Build failed for 08master @ ed6f2ea2 06https://github.com/crawl/crawl/actions/runs/1668656128 11:13:09 nice, integration tests FTW 11:26:59 03ebering02 07[no-more-abyss-scum] * 0.28-a0-1321-gc86b62e: feat: give an XP reward for the abyssal rune 10(5 minutes ago, 3 files, 25+ 1-) 13https://github.com/crawl/crawl/commit/c86b62ef75c0 11:33:23 03kate-02 07* 0.28-a0-1419-ga4934fe: Remove the strength bonus from bite damage 10(13 minutes ago, 2 files, 5+ 9-) 13https://github.com/crawl/crawl/commit/a4934feff64f 11:35:39 "VS bite bite" 11:37:00 that's a cool ebering commit 11:37:06 <05k​ate> i like the concept but that seems slightly excessive an amount for abyss rune XP, i don't think a typical non-scumming player would get anywhere near that much xp in a normal abyss rune retrieval surely? i think it'd need to be a lot tougher to get the rune to justify that big a reward 11:38:22 <05k​ate> i do think it should probably also use the xp potion codepath in some form, so that you can see the skills you'll gain instead of having to make sure to set your skill training before picking it up and hoping it'll work out how you want it to 11:41:06 <06a​dvil> I'm not quite sure I understand the loop in _concretize_mut_deletion but it looks like it'll only continue for a player with no mutations? 11:41:06 <06a​dvil> maybe that == is supposed to be a != based on the comment 11:43:49 <06a​dvil> (in if (you.get_base_mutation_level(mutdef.mutation, false, false) == 0)) 11:47:57 Unstable branch on crawl.kelbi.org updated to: 0.28-a0-1419-ga4934feff6 (34) 11:50:21 04Build failed for 08master @ a4934fef 06https://github.com/crawl/crawl/actions/runs/1668823225 11:51:53 <12e​bering> SKMF_EXPERIENCE scares me tbh 11:52:11 <12e​bering> but I do agree that it'd be nice to show something 11:53:59 <12e​bering> open to other XP numbers, ones I considered were: 50k, 100k, 200k 11:55:49 <05k​ate> yeah, i feel like something in the 50-100K range might be reasonable, i guess mainly being concerned about it being really absurd if you manage to get it early-ish 11:56:24 <12e​bering> ya gammafunk just wizmoded it with a spen and it went from XL1 to XL16 fully formed 11:56:34 <05k​ate> mmm that does seem a bit much, heh 11:57:20 <05k​ate> probably fine for it to still be pretty great if you somehow pull it off like, pre-xl10, but that feels a little extreme 11:57:20 maybe just scaled by current XP? 11:57:28 <06a​dvil> well, xp numbers scale very oddly across many levels 11:58:06 <06a​dvil> XL1 to XL16 is not that much xp in absolute numbers 11:58:28 <06a​dvil> maybe there's some alternative to just picking a number? 11:58:41 <10P​leasingFungus> lemme look in a bit, got meetings 11:58:42 <06a​dvil> I assume this is why !xp has always given exactly one level 12:00:26 * geekosaur is reminded of going straight to XL4 by picking off the occasional D:1 ogre way back when™ 12:01:00 <13S​astreii> dreamshard necklace and woodcutter's axe. for the second one i just changed the handle (just bc it was invisible on dungeon floor) and the shade. 12:01:00 <13S​astreii> https://cdn.discordapp.com/attachments/747522859361894521/929087240741720136/Schermata_2022-01-07_alle_19.58.51.png 12:01:01 <13S​astreii> https://cdn.discordapp.com/attachments/747522859361894521/929087241043714048/woodcutters_axe.png 12:01:01 <13S​astreii> https://cdn.discordapp.com/attachments/747522859361894521/929087241261834322/dreamshard_necklace.png 12:04:09 really it doesn't sound unreasonable to me to just give a !xp when you pick up abyssal rune? 12:05:15 <05k​ate> that might be simplest, and does still work as being extremely strong if you happen to pull it off early somehow 12:05:25 <06a​dvil> yeah that's sort of what I was thinking, and it sidesteps the xp scaling issue 12:06:52 iirc !xp's skill exp given is not actually the same as whatever one would have gotten from gaining the level the hard way 12:06:52 <06a​dvil> oh 12:06:52 <12e​bering> would be a cleaner implementation, but I think kind of sad to not tick off XP timers for tempmuts and stats. the simplicity does appeal to me 12:06:52 <06a​dvil> I wonder if that explains some weird corner cases I have never understood 12:06:52 <12e​bering> it's a fixed ammount of skill exp 12:06:52 <05k​ate> yeah, you get a fixed amount of skill XP and then your level is incremented by 1 separately 12:06:52 yeah 12:06:52 <12e​bering> given via the skills menu in SKMF_EXPERIENCE mode 12:08:22 <12e​bering> hm. yeah I think !xp is the better way to go 12:09:02 <12e​bering> feeling less good about the prop hack I used to tick down the other timers 12:10:19 <05k​ate> i was wondering from looking at that if you could like, kill a lich in the same turn you pick up the rune (by having it sit in a damaging cloud?) to still get XP from it 12:10:41 <12e​bering> I think so 12:10:46 <12e​bering> seems bad 12:11:18 <05k​ate> unlikely to be relevant but still a weird edge case, yeah 12:11:51 speaking of abyss, was it intentional that the spellbook merging a while back increased the number of relatively early abyssers by a significant amount? (wizards are pretty common) 12:13:13 I was reminded of this recently by the volcano that has like 7 wizards 12:14:07 <12e​bering> It was not intentional no, I went with banish on wizardds for flavour and feel reasons 12:16:37 I sort of feel like banish just overshadows everything else they do now, like I have no clue what else is in their spellbook 12:16:52 <05k​ate> i guess they're not particularly common in regular dungeon generation but the warlock's mirror guarded unrand vault also places a bunch of them for example 12:17:03 <12e​bering> fireball, invis, and blink 12:17:59 (partly I have no idea what else is in their spellbook because I worship Ru a lot and tend to apocalypse them on sight now that their chance of having banish was multiplied by 6) 12:19:38 there are a bunch of vaults that place wizards for flavor reasons 12:19:38 (usually not abyss flavor reasons) 12:21:42 geekosaur "reminded of going straight to XL4" that's still a thing with D:2 Sigmund kills :) 12:24:02 <10P​leasingFungus> advil: So, the concretize_mut_deletion loop is doing reservoir sampling for potential muts to delete. I'll paste the excerpt for others' context: for (const mutation_def &mutdef : mut_data) { ... // Check whether we have a non-innate, permanent level of this mut if (you.get_base_mutation_level(mutdef.mutation, false, false) == 0) continue; ... ++seen; if 12:24:02 (one_chance_in(seen)) chosen = mutdef.mutation; } return chosen; 12:24:30 <10P​leasingFungus> that is to say, if your base level for some mutation is 0, then we will not consider deleting it. 12:26:07 <10P​leasingFungus> if your base mutation level is nonzero, then we will consider deleting it. 12:26:07 <10P​leasingFungus> That seems right to me... is there something I'm missing? 12:26:07 <06a​dvil> oh, I see 12:26:07 <10P​leasingFungus> sasteii: oh, gorgeous 🙂 very honored you kept my rusty woodcutter axe head 12:26:07 <06a​dvil> but if a player has no muts it will still reach the end of the loop and return `NUM_MUTATIONS~ 12:26:23 <06a​dvil> which is what is causing the crash I think 12:26:28 <10P​leasingFungus> oh, crashes 12:26:32 <10P​leasingFungus> right, i forgot to handle that case, haha 12:26:36 <06a​dvil> mut potions are crashing in trunk btw 12:26:39 <10P​leasingFungus> oops 12:27:15 <10P​leasingFungus> gotta go to another meeting in 3min but here's something 12:27:18 yea that was my point re: tests :P 12:27:22 <10P​leasingFungus> not sure why we'd encounter that case so often tho 12:27:36 <10P​leasingFungus> i don't even look at build failures half the time these days, they're so flakey... 12:27:43 <10P​leasingFungus> got me this time tho 12:27:45 <12e​bering> player quaffing !mut with no muts 12:27:48 <10P​leasingFungus> oh right lol 12:28:00 <10P​leasingFungus> anyway, classic oops 12:28:11 <10P​leasingFungus> i did document that behaviour! i want it noted 12:29:41 noted! 12:30:16 <10P​leasingFungus> re wizards: drop banish cast rate? 12:30:48 <10P​leasingFungus> that might do nothing, admittedly 12:30:54 <10P​leasingFungus> so maybe don’t 12:31:18 03PleasingFungus02 07* 0.28-a0-1420-g79b0f14: Fix a mutation crash? 10(4 minutes ago, 1 file, 1+ 0-) 13https://github.com/crawl/crawl/commit/79b0f14e7e4b 12:31:18 03PleasingFungus02 07* 0.28-a0-1421-g19973eb: Fix some mutation comments 10(2 minutes ago, 1 file, 3+ 4-) 13https://github.com/crawl/crawl/commit/19973ebb7aa0 12:32:32 as much as I'm peeved when I get banished, I've never had an issue with wizards' banishments 12:32:50 <09h​ellmonk> is there still that one vault that places 4 wizards on like d8 12:33:06 Unstable branch on crawl.kelbi.org updated to: 0.28-a0-1421-g19973ebb7a (34) 12:33:51 <05k​ate> that one might be the warlock's mirror one i mentioned? that's pretty early at least, not sure if it's d:8 12:35:08 !vault minmay_smoke_and_mirrors 12:35:09 Can't find minmay_smoke_and_mirrors. 12:35:12 <05k​ate> ah, d:10- (and up to 17 wizards) 12:35:20 !source large_themed.des:265 12:35:21 https://github.com/crawl/crawl/blob/master/crawl-ref/source/dat/des/variable/large_themed.des#L265 12:35:51 <12e​bering> that one might just need to be turned down 12:35:55 <12e​bering> 17 wizards is a lot 12:36:34 <05k​ate> 8-9 on average which is still lots, yeah, probably some different randomisation would be good 12:36:54 There's also getting a D:9 Erolcha, but I think that's probably fine 12:37:15 mainly because it's just a single jawn 12:38:57 <05k​ate> erolcha is much more deliberately intended to show up early and banish you, yeah 12:38:57 I think my complaint is not really so much that the quantity of early banishment from wizards is an issue (we have erolcha and distortion weapons) but that I don't think it's really a great design for an early banish monster, especially when used a lot for non-banish flavor 12:38:57 I personally have had some very fun moments with surviving banishments as a sort of shafting like experience which is neat. 12:38:57 !lm * recent xl<=12 abyss.enter / abyss.enter=a_wizard 12:39:00 1771/11549 milestones for * (recent xl<=12 abyss.enter): N=1771/11549 (15.33%) 12:39:19 !lm * recent xl<=12 s=abyss.enter 12:39:23 11549 milestones for * (recent xl<=12): 2597x Erolcha, 1771x a wizard, 1222x Sonja, 1080x Psyche, 415x orc, 401x unwielding a weapon of distortion, 363x gnoll sergeant, 345x gnoll, 331x Crazy Yiuf, 323x kobold, 288x Maggie, 205x orc wizard, 192x orc warrior, 188x kobold brigand, 165x Xom, 150x Lugonu's touch, 118x entered the Abyss!, 118x big kobold, 108x Sigmund, 104x goblin, 103x Edmund, 103x wi... 12:39:40 kobolds, wow lol 12:40:05 the uniques are intended to be special threats, wizards aren't 12:40:09 <12e​bering> like I said, when I did the monster spellbooks I picked the wizard banish book because historically wizards seemed to be vaguely a copy of a reasonably experienced D&D wizard class 12:40:32 <12e​bering> so, a replacement for banishment that still vibes with "solitary powerful magician" would be fine to stick on em 12:41:56 Could have a variant that uses the abyss almost like a weapon that "drags" you through it (high frequency random teleports) followed by a forceful exit back in front of the wizard's face. (Just spitballing) 12:42:21 sounds too xom to me 12:43:16 Perhaps 12:45:24 Could also do an inverse of Oka's arena thing where you're cast into a duel-like realm where you have to battle a ghost of yourself. 12:45:24 <12e​bering> they're not meant to be that flashy of a monster 12:45:24 <12e​bering> just a mean mana muncher with badass spells 12:45:24 hm, yeah 12:46:42 Hard to do something similar-but-not banishment that's a bit softer and not totally in-your-face, though 12:47:06 <10P​leasingFungus> mean mana muncher 12:47:13 <10P​leasingFungus> love it 12:47:53 <10P​leasingFungus> @ebering can we make abyss rune explicitly cure tempmuts? or is that too much complexity? 12:48:00 it is worth noting that wizards continue to be a significant quantity of banishment later on too as things are - e.g. they are 23% of banishes between XL16 and XL20 12:48:25 That's a surprise 12:48:47 not sure if this makes just replacing their banish with something else better or worse 12:50:37 03ebering02 07[no-more-abyss-scum] * 0.28-a0-1322-g19d0d09: squash! feat: give an XP reward for the abyssal rune 10(8 minutes ago, 3 files, 3+ 16-) 13https://github.com/crawl/crawl/commit/19d0d09baa87 12:51:52 really I think ideal might be to split wizards into an early variant and a later variant but that sounds like a lot of work 12:51:52 hedge wizard / sorcerer 12:51:52 <12e​bering> could replace the early ones w/pyromancers or zephyrmancers 12:51:52 (the later variant still being weaker than elf sorcerers) 12:54:24 the problem with using pyromancers/zephyrmancers in too many random vaults is that the vaults just end up feeling like elf:1 12:54:51 <12e​bering> hm yeah. 12:54:53 <12e​bering> hmmmmm 12:55:13 <12e​bering> (also thinking about where we have free glyphs if there's a new monster type to stick in) 12:56:18 <12e​bering> (kobold hedge wizard is too long of a monster name) 12:56:32 <12e​bering> but kobold wizard is too repetitive w/orc wizard etc. 12:58:12 hedge kobold? 12:58:18 kobold magician 12:59:58 oh I like that 13:01:25 <12e​bering> ??glyphs 13:01:26 <04C​erebot> glyphs[1/3]: http://s-z.org/neil/tmp/crawl-glyphs-narrow.html — Generated with the script http://s-z.org/neil/tmp/crawl-glyphs 13:02:18 <08n​icolae> magikobold 13:02:39 <08n​icolae> kobold koboldmancer. summon kobold. kobold bolt. orb of kobold. (korbold) 13:05:46 <12e​bering> hm actually we have more space on p with the desolation monsters moved to a 13:06:19 <12e​bering> could do hedge wizard (magenta p) and sorcerer (lightmagenta p) 13:06:21 ... you monsters 13:11:06 <05k​ate> p is still pretty overloaded even with the desolation stuff becoming ants, gotta remove some stuff to make space imo 13:11:06 <09h​ellmonk> add gnoll abyssal knights 13:11:21 go team a 13:11:37 <09h​ellmonk> idk what glyph that is bc I am a visual learner 13:11:38 <12e​bering> g more overloaded than p 13:12:08 <12e​bering> (not actually) 13:12:35 just use ρ instead of p 13:13:04 player's fault if they can't tell the difference between rho and p 13:17:32 <10P​leasingFungus> ebering: aspirational 13:31:15 <12e​bering> @kate did you have any more on that branch? 13:31:15 <10P​leasingFungus> wow, power xp 13:33:42 <05k​ate> i didn't have anything else in mind no, seems good to merge and test i think if you didn't have anything else planned either 13:33:53 perryprog: Team a are tragically no more! 13:34:50 <12e​bering> yeah I did not 13:35:05 <12e​bering> Aliscans you mentioned seeing unlinked item errors on A:5, was that in master or on this branch 13:35:09 <12e​bering> I've been unable to repro 13:35:37 03ebering02 07[no-more-abyss-scum] * 0.28-a0-1323-g8726e92: refactor: give !xp power scaling 10(10 minutes ago, 1 file, 6+ 4-) 13https://github.com/crawl/crawl/commit/8726e9200ae7 13:35:37 03ebering02 07[no-more-abyss-scum] * 0.28-a0-1324-gf9e3ab0: fixup! squash! feat: give an XP reward for the abyssal rune 10(10 minutes ago, 1 file, 2+ 1-) 13https://github.com/crawl/crawl/commit/f9e3ab0829ee 13:36:56 i've got it 13:36:56 kobold wizard 13:36:56 and it has magic dart, blink, blink, and (blink+magic dart in one turn) 13:36:56 <10P​leasingFungus> wow 13:36:57 it should have blink away too 13:44:12 <12e​bering> oop forgot to pull 13:48:36 03ebering02 07* 0.28-a0-1422-gfcf5406: feat: prevent gaining experience in the Abyss 10(11 days ago, 3 files, 12+ 4-) 13https://github.com/crawl/crawl/commit/fcf540680dac 13:48:36 03ebering02 07* 0.28-a0-1423-g578a0bb: feat: remove abyss random item generation 10(11 days ago, 2 files, 12+ 79-) 13https://github.com/crawl/crawl/commit/578a0bbfb4ea 13:48:36 03ebering02 07* 0.28-a0-1424-g3b30598: feat: increase abyss plunge rate 10(11 days ago, 1 file, 6+ 6-) 13https://github.com/crawl/crawl/commit/3b305989a871 13:48:36 03kate-02 {ebering} 07* 0.28-a0-1425-g010f2a2: feat: don't grant piety in the Abyss 10(9 days ago, 4 files, 12+ 4-) 13https://github.com/crawl/crawl/commit/010f2a227271 13:48:36 03kate-02 {ebering} 07* 0.28-a0-1426-g6c1bee5: feat: reduce wretched star malmutation rate 10(8 days ago, 2 files, 2+ 4-) 13https://github.com/crawl/crawl/commit/6c1bee596da7 13:48:36 03kate-02 {ebering} 07* 0.28-a0-1427-gd21ca1c: feat: make Abyss exits and staircases slightly more common 10(6 days ago, 1 file, 4+ 3-) 13https://github.com/crawl/crawl/commit/d21ca1c0ff57 13:48:36 03ebering02 07* 0.28-a0-1428-gd764ef0: feat: give an XP reward for the abyssal rune 10(2 hours ago, 1 file, 12+ 0-) 13https://github.com/crawl/crawl/commit/d764ef0d23e2 13:48:36 03ebering02 07* 0.28-a0-1429-gf3d713d: refactor: give !xp power scaling 10(23 minutes ago, 2 files, 7+ 5-) 13https://github.com/crawl/crawl/commit/f3d713df7a6d 13:48:37 Branch no-more-abyss-scum updated to be equal with master: 13https://github.com/crawl/crawl/tree/no-more-abyss-scum 14:04:01 Unstable branch on crawl.kelbi.org updated to: 0.28-a0-1429-gf3d713df7a (34) 14:06:43 04Build failed for 08no-more-abyss-scum @ 441ad28d 06https://github.com/crawl/crawl/actions/runs/1669276556 15:16:38 FR: lost and found shop vault 15:17:19 <08n​icolae> what would it sell 15:17:50 <08w​ormsofcan> wrath of trog, morg 15:17:55 that 15:18:05 plus some crap probably 15:18:17 <08n​icolae> 🤔 15:20:00 there's several other things I can think of. wucad mu comes to mind 15:20:00 anything claiming to have been formerly owned by whoever 15:20:00 a +0 cloak (someone's coat), potion of degen (id'd potion someone threw out), any of the "lost" unrandart weapon or two, a (large?) chunk of stones (lost in couch cushions) 15:22:44 <09h​ellmonk> Lost and found shop selling all the removed abyss loot 15:23:03 <08n​icolae> i suppose it wouldn't hurt to have more abyss vaults 15:23:08 Natasha's corpse 15:23:55 <08n​icolae> i wonder, if i put a unique's corpse in a vault, will it prevent that unique from generating elsewhere? 🤔 15:24:07 No 15:26:36 oh and a large rock (not actually lost, it's just a random rock that someone thought was someone's) 15:28:09 polyphemus's roc 15:28:12 k 15:28:43 oh or that 15:28:56 actually yeah that's way better, lol 15:30:06 <08n​icolae> quick q: i shouldn't use nameless horrors in vaults, right, those are just reserved for miscasts? 16:09:22 <05k​ate> probably not yeah, they're designed around having their hd/attack strength scaled with miscast strength 16:11:12 <10P​leasingFungus> think the issue is more that they’re only relevant to summoners really 16:11:12 <10P​leasingFungus> you could make one with some hd 16:11:26 <10P​leasingFungus> but most characters wouldn’t care about em and a few would just take it rough 16:11:29 <10P​leasingFungus> seems rude 16:12:22 or just be confused because they've never seen one before (like me) 16:14:28 <10P​leasingFungus> confusion 16:18:17 fr: a nameless horror with a name 16:19:20 <08n​icolae> nameful horror 16:21:51 <09h​ellmonk> nameless horror dungeon entrance vault 16:24:03 Unstable branch on underhound.eu updated to: 0.28-a0-1429-gf3d713df7a (34) 16:24:51 horrorless name 16:25:51 <05k​ate> i just discovered what might be my favourite bit of crawl trivia in a long while: did you know there is an unused abyss layout that models gentrification to procedurally generate cities 16:26:15 /what/ 16:26:21 that's aweasome 16:26:25 <05k​ate> along with determining the elevation, temperature and humidity to decide on what the terrain around it looks like 16:26:55 fr: make that ununused 16:27:05 <05k​ate> !source dgn-proclayouts.cc:348 16:27:05 <04C​erebot> https://github.com/crawl/crawl/blob/master/crawl-ref/source/dgn-proclayouts.cc#L348 16:27:45 <05k​ate> it was disabled for being one of a number of layouts that didn't work for whatever reason, i think i remember the forest one existing and then being disabled but i don't recall this one at all 16:30:38 <05k​ate> the fancy procedural layouts like the columns/wastes/big river are some of my favourite newabyss stuff generally, they're very good 16:31:59 <05k​ate> all way beyond me in terms of figuring out how they actually work in detail though 16:31:59 <08n​icolae> holy lmao 16:44:49 <10P​leasingFungus> incredible 17:31:39 Is there a better way of doing something like thing_do_grammar((description_level_type) DESC_THE, raw_feature_description(you.pos()), false)? 17:32:27 (I can't use feature_description_at because that goes off of player map knowledge, and the description of the tile being gotten is DNGN_UNSEEN at this point) 17:33:00 also ignore the cast to description_level_type, that was a workaround for an lldb bug or something 17:41:40 hm, feature_description(env.grid(you.pos()), NUM_TRAPS, "", DESC_THE); seems to work, albeit a bit verbose 17:53:19 New branch created: pull/2341 (1 commit) 13https://github.com/crawl/crawl/pull/2341 17:53:19 03Perry Fraser02 07https://github.com/crawl/crawl/pull/2341 * 0.28-a0-1430-g475d9e0: fix: properly describe moving staircases 10(4 minutes ago, 1 file, 2+ 2-) 13https://github.com/crawl/crawl/commit/475d9e0da8f0 17:54:13 pr title clickbait 18:16:37 ebering: Sorry for the delay. I can reproduce the unlinked item errors in the branch or in any trunk version from 578a0bbfb4 on. Compile options don't seem to make a difference. 18:29:38 <12e​bering> Aliscans can you give me a save backup or more detailed repro steps than walk around Abyss 5? 18:33:21 Yes; I'll put it in a bug report. 18:38:47 It's https://github.com/crawl/crawl/issues/2342 19:30:04 <09g​ammafunk> want to say these were made by bh 19:30:40 <05k​ate> they were mumra! or at least the one i linked was 19:36:15 <09g​ammafunk> aha! 23:34:46 Unstable branch on crawl.develz.org updated to: 0.28-a0-1429-gf3d713df7a (34) 23:55:49 Windows builds of master branch on crawl.develz.org updated to: 0.28-a0-1429-gf3d713df7a