00:59:03 -!- indigaz23 is now known as indigaz2 01:19:34 <08n​icolae> yeah, iirc hall of blades is so big Precisely so you're likely to get teleported into it, which makes scrolls of teleport on elf 2 risky 03:32:58 Experimental (bcrawl) branch on underhound.eu updated to: 0.23-a0-5261-gd9800d219b 05:26:29 Unstable branch on crawl.akrasiac.org updated to: 0.34-a0-935-g04fd3a2 (34) 05:48:42 03SentientSupper02 07https://github.com/crawl/crawl/pull/4751 * 0.34-a0-808-geb79459ac5: Remove an unnecessary line 10(46 seconds ago, 1 file, 0+ 1-) 13https://github.com/crawl/crawl/commit/eb79459ac5dd 06:48:11 03dolorous02 07* 0.34-a0-936-g154c593529: Remove unneeded blank line. 10(12 minutes ago, 1 file, 0+ 1-) 13https://github.com/crawl/crawl/commit/154c59352914 06:48:11 03dolorous02 07* 0.34-a0-937-g85a5aa5d54: Fix typo. 10(2 minutes ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/85a5aa5d5421 07:17:10 03dolorous02 07* 0.34-a0-938-g9201133964: Add missing space. 10(6 minutes ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/920113396436 09:17:06 <04d​racoomega> I don't suppose anyone knows any good reason why bolt::set_agent() doesn't actually set the beam attitude to the agent's attitude? And instead we do this manually afterward in like 50 different places? 09:17:36 <04d​racoomega> (I am suspecting the answer is 'no', but it seems worth asking) 09:19:22 <02M​onkooky> I think you'll have better luck looking for a bad reason 09:20:03 😈 09:20:15 <04d​racoomega> Haha 09:20:36 <04d​racoomega> Hey, sometimes there are non-obvious reasons (but my guess here is mostly 'It was that way in ancient times and code just keeps doing what other code does' 09:21:15 <04d​racoomega> Feels like something I'd like to change (but then I'd want to verify nothing anywhere is doing something weird with it, which takes time, so probably I am just making a note for after this project. And for now I'll do it manually as well ^^; ) 09:22:45 <02M​onkooky> it looks like a lot of beams don't ever set an attitude? 09:22:59 <02M​onkooky> but it's unclear to me what a beam's attitude actually does 09:25:32 <02M​onkooky> I'm actually not certain a beam's attitude is ever checked 09:28:37 <02M​onkooky> Yeah I cannot find any point where a beam's attitude is compared with anything, or when anything assigns based on a beam's attitude 09:29:51 <02M​onkooky> or anywhere it is passed as a function argument 09:31:33 <06m​umra> https://cdn.discordapp.com/attachments/747522859361894521/1426970555717783636/image.png?ex=68ed2964&is=68ebd7e4&hm=d9c388a589786a60b52d59b70697883473f111be983799e24fc4437e789dd1ea& 09:31:44 <06m​umra> "find all references" disagrees 🙂 09:32:14 <04d​racoomega> It's done in a bunch of places, yes 09:32:33 <04d​racoomega> Some places instead actually check the agent's attitude, but plenty don't 09:33:13 <02M​onkooky> ugh I've gotten to used to working without a functional find all references 09:33:32 <02M​onkooky> was trying to bodge with regex around .attitude 09:33:49 <04d​racoomega> Which is not how code inside the class itself is going to reference it, of course 09:36:17 <02M​onkooky> hm this feels like a terrible way to do this 09:36:17 <04d​racoomega> (But I just ran into another situation where not remembering to manually specify it caused something to work incorrectly. It's easy to overlook since a bunch of things work properly anyway. So it really feels like a case where the code should be taking care of this for the caller, in the average case.) 09:36:18 <06m​umra> vscode with C++ plugin is actually crazy good at understanding the code 09:37:28 <06m​umra> contextual autocomplete and ctrl-click to follow reference are huge timesavers 09:38:11 <02M​onkooky> yeah I've been working with gdscript for the past while 09:38:28 <02M​onkooky> and vscode's gdscript plugin is much much less functional than I'd like 09:40:01 <06m​umra> i've been playing with godot as well but been using GodotJS which lets you use TypeScript for scripting (since it's the language i use 99% of the time in work) 09:41:13 <02M​onkooky> Should this be using mons_att_wont_attack instead of attitude == ATT_FRIENDLY? if ((origin_spell == SPELL_PERCUSSIVE_TEMPERING || origin_spell == SPELL_FORTRESS_BLAST) && attitude == ATT_FRIENDLY) { return true; } 09:41:54 <04d​racoomega> Irrelevant since those are player-only spells 09:41:57 <06m​umra> vscode has awesome TS support by default so that's been great (although integration with godot itself is not quite there, e.g. it can't insert triggers for you) 09:42:05 <04d​racoomega> (For now, at least) 09:42:35 <02M​onkooky> Can't show up on mara illusions? 09:42:47 <04d​racoomega> No 09:44:00 <04d​racoomega> I mean, even if it was on hostile monsters, this code wouldn't be wrong. The only 'wrongness' would be if it could show up on good neutrals. I guess this is theoretically not quite right, but there's a handful of player-only things that are player-centric 09:44:39 <04d​racoomega> (Generally when I go around and add a monster version of a spell, I do a pass to root out player-centric code that might have been written under the assumption only they would use it) 09:51:06 <04d​racoomega> Of course, sometimes things get briefly missed, too, but I try my best >.> 09:55:42 <02M​onkooky> if it was on hostile mons, wouldn't it make marionetted versions capable of hitting you? 09:57:02 <04d​racoomega> You are, in general, immune to all damage caused by a marionette 09:57:06 <04d​racoomega> Just in case 09:58:00 <04d​racoomega> (After all, we can't really use things like Chain Lightning with you even in LoS and keep it from sometimes hitting you) 10:04:39 <02M​onkooky> iood I think would break if this change was made without anything else 10:05:52 <02M​onkooky> the beam to check if the orb hits needs to use the orb's attitude, not the caster's 10:09:12 <04d​racoomega> I mean, wouldn't be anything stopping the caller from manually setting attitude if they wanted to use some non-default value. It would need to be examined on a case-by-case basis with existing code. 10:13:31 <02M​onkooky> I mean in iood's case you can set the attitude after the set_agent call, but right now it would break 10:15:41 <04d​racoomega> Well, sure. Obviously I'd survey that sort of thing before changing things (which is why I'm deferring it to another day ^^; ) 10:17:33 <02M​onkooky> Now that I'm looking more at it- I think there is actually a good reason 10:18:01 <02M​onkooky> It seems like the bulk of spells want to be ATT_HOSTILE regardless of agent 10:18:19 <04d​racoomega> Why would they? 10:18:37 <02M​onkooky> Or at the very least, currently are 10:19:15 <04d​racoomega> I mean, I think a bunch currently are because they didn't bother to specify and it just so happens that a bunch of spells probably aren't affected by that value being 'wrong'. But that doesn't mean that desired behavior actually depends on it. 10:19:59 <04d​racoomega> I wouldn't say 'the bulk of spells', though. Monster beams, at least, go through a common function that actually sets their attitude properly. 10:26:32 <02M​onkooky> what is that function? 10:27:48 <02M​onkooky> it seems like there's just straight up no consistency with how beams are set up 10:31:19 <04d​racoomega> A lot of stuff goes through mons_spell_beam() at some point. Certainly far from all of it. 10:31:40 <04d​racoomega> But the return value of that is used even for some non-beam spells, too, in one form or another. 10:31:46 <04d​racoomega> It's true that we're all over the place about this, though. 10:32:00 <02M​onkooky> but yeah it looks like player spells don't call set_agent and don't set an attitude in the central your_spells() 10:33:10 <04d​racoomega> Yeah, they don't 10:33:31 <04d​racoomega> We do this manually in lots and lots of places, but there's certainly no guarantee 10:45:37 <04d​racoomega> Niche trivia. If you somehow carry a blowgun forward from oldcrawl into a modern game, trying to fire it while equipped will result in you 'throwing' needles that look like question marks and actually remain on the ground for you to pick up and put into your inventory. It doesn't actually use those, so you can just keep generating an infinite pile of them 10:45:56 <04d​racoomega> (You can throw them yourself, too, if you want) 10:46:18 <03i​mplojin> aw. cute 10:46:39 <03i​mplojin> fr: april fool's questionmark dartgun 10:48:31 <04d​racoomega> (This was a result of me learning - somewhat to my surprise - that we haven't actually dummied out removed unrands like we did for many other items and quite a few actually still have all of their code/tiles/descriptions remaining) 10:49:35 <04d​racoomega> Though blowgun of the assassin looks like a bow on the paperdoll >.> 10:49:40 <02M​onkooky> I'm wondering if spell attitude is broadly broken, and so rarely consequential that it isn't noticeable 10:49:42 <02D​arby> bowgun of the assassin 10:50:13 <02M​onkooky> I think possibly xom will find some things funny that they shouldn't because attitudes are wack??? 10:53:23 <04d​racoomega> I mean, I suspect the current implemention produces largely the correct behavior or we would have noticed more bugs, but I would not be surprised for there to be some 10:54:25 <02M​onkooky> if (YOU_KILL(thrower)) should be true for player spells, right? 10:56:46 <04d​racoomega> Most of the time, at least 11:04:55 <02M​onkooky> ok I think that outside narrow specifically defined cases player spell attitude does not matter 11:05:10 <04d​racoomega> That matches my vague awareness of it 11:12:49 <02M​onkooky> I'm personally in favor of moving it to never matter 11:21:45 <02M​onkooky> The current cases where it does matter- -Percussive Tempering and Fortress Blast check attitude == ATT_FRIENDLY in ignores_player() -Shadow spells in ignores_monster()??? I think these are actually cast by monsters -Percussive Tempering, Fortress Blast, and Awaken Flesh check mons_atts_aligned(attitude, mon->temp_attitude()) in ignores_monster() 11:24:35 <04d​racoomega> It's used in a lot more places than that 11:24:49 <04d​racoomega> Including tracer code to count whether you're hitting allies or enemies 11:26:01 <02M​onkooky> That tracer code was why I originally thought this 11:26:24 <02M​onkooky> but it turns out those bits of code only matter for monsters 11:27:24 <04d​racoomega> I mean, there's a bunch of places where the same sort of tracer is used for player effects 11:37:50 <02M​onkooky> Ok, it looks like it also checks if reflected spells hit the player, and amuses xom if they do 11:38:02 <02M​onkooky> and I don't think this works correctly with 90% of player spells 11:41:31 <06d​olorous_84348> Which, after the unrands actually get dummied out, leads into the long-term question of when/whether we're ever going to break binary compatibility and really clean it all up. Maybe only out of necessity. (Say, hypothetically, someone comes up with a new god concept that everyone likes, in which case the associated character for them will be either 'P' or '2', so we finally opt for 'P' and break binary compatibility, if only to 11:41:31 get rid of Pakellas and free up 'P' for them.) 11:44:24 <06d​olorous_84348> "The bow wraps itself around the orc's neck! The orc has difficulty breathing." 11:46:14 <02M​onkooky> Going through the list of things that reference attitude (that I am aware of- to claim certainty would be hubris) -Roots and BVC use alternate checks in ignore_player() -tracer_affect_player explicitly only checks attitude if a monster is casting -affect_player_enchantment BEAM_TELEPORT, the player can't create teleport beams -bottom of affect_player_enchantment used for friends_hurt foes_hurt etc- all of these are only ever checked 11:46:14 if a monster fired the beam. Also if (source_id == MID_PLAYER) because reflected spell xom is amused! -top of bolt::affect_player explicitly only checks attitude if a monster is casting -bottom of bolt::affect_player is similar to affect_player_enchantment -bottom of enchantment_affect_monster calls update_hurt_or_helped; a similar deal of Xom might find it funny and updating friends_hurt foes_hurt -tracer->actor_affected() takes a friendly fire 11:46:15 parameter; I can't say I've traced this out enough to know what it does confidently but it seems like this is used for monsters choosing whether to hurt their friends. 11:51:42 <02M​onkooky> ok actually it's also used for bolt::do_fire with a very helpful comment // ? && !tracer->has_hit_foe() 11:53:46 New branch created: pull/4831 (1 commit) 13https://github.com/crawl/crawl/pull/4831 11:53:46 03brianfaires02 07https://github.com/crawl/crawl/pull/4831 * 0.34-a0-939-ga5f8d06bba: equip_slot_by_name(): Remove duplicated list and catch "Body Armour" 10(15 minutes ago, 2 files, 6+ 7-) 13https://github.com/crawl/crawl/commit/a5f8d06bbab2 11:54:51 <02M​onkooky> Ok it looks like tracer specifically have their allegiance set to ATT_FRIENDLY, and it looks like it is done specifically so has_hit_foe functions 11:58:02 03brianfaires02 07https://github.com/crawl/crawl/pull/4831 * 0.34-a0-939-g9767bcdb73: equip_slot_by_name(): Remove duplicated list and catch "Body Armour" 10(2 minutes ago, 2 files, 6+ 7-) 13https://github.com/crawl/crawl/commit/9767bcdb7316 11:59:07 03brianfaires02 07https://github.com/crawl/crawl/pull/4831 * 0.34-a0-939-gd4c9069838: equip_slot_by_name(): Remove duplicated list and catch "Body Armour" 10(3 minutes ago, 1 file, 5+ 7-) 13https://github.com/crawl/crawl/commit/d4c906983872 12:04:27 03brianfaires02 07https://github.com/crawl/crawl/pull/4831 * 0.34-a0-939-g7602fe6d37: equip_slot_by_name(): Catch "Body Armour" 10(8 minutes ago, 1 file, 5+ 7-) 13https://github.com/crawl/crawl/commit/7602fe6d37e9 13:23:01 New branch created: pull/4832 (1 commit) 13https://github.com/crawl/crawl/pull/4832 13:23:01 03LiciTheCrawler02 07https://github.com/crawl/crawl/pull/4832 * 0.34-a0-939-g9155ebbcd1: feat: Adjust Body Armour acquirement 10(19 minutes ago, 2 files, 8+ 7-) 13https://github.com/crawl/crawl/commit/9155ebbcd118 13:27:17 03LiciTheCrawler02 07https://github.com/crawl/crawl/pull/4832 * 0.34-a0-940-g5e29445399: Checkwhite 10(64 seconds ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/5e29445399de 15:36:53 03LiciTheCrawler02 07https://github.com/crawl/crawl/pull/4832 * 0.34-a0-939-g6706d6d8e7: feat: Adjust Body Armour acquirement 10(3 hours ago, 2 files, 8+ 7-) 13https://github.com/crawl/crawl/commit/6706d6d8e726 15:39:10 Unstable branch on underhound.eu updated to: 0.34-a0-938-g9201133964 (34) 16:51:17 03dolorous02 07* 0.34-a0-939-gfa53f958eb: Fix spelling. 10(2 minutes ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/fa53f958ebfb 16:59:05 <06m​umra> i tend to think zero is an option for a new god as well 17:00:08 <06d​olorous_84348> Good point. 17:01:01 <09h​ellmonk> @mumra leashing code does give a good opportunity to make a two tile gimmick species 17:01:06 <09h​ellmonk> Long Naga 17:02:41 <06m​umra> there was a discussion a while back about a mounted species where after some trigger (say 50% HP) you dismount and fight alongside each other 17:03:14 <06m​umra> like a species where everyone grows up with a bonded animal 18:14:02 -!- daethoven13714 is now known as daethoven1371 19:07:27 <09g​ammafunk> @dracoomega guess this wasn't announced here, but here's a CAO crash where a player's paragon apparently tried to attack a revived Nobody (that the player had just killed), causing a crash due to an aliveness assert failing: https://crawl.akrasiac.org/rawdata/Bamboomancer/crash-Bamboomancer-20251013-020353.txt 19:07:48 <09g​ammafunk> this is 0.33 19:23:02 -!- HeniMiku_ is now known as HeniMiku 19:57:25 03brianfaires02 07https://github.com/crawl/crawl/pull/4831 * 0.34-a0-939-gd93e6df790: equip_slot_by_name(): Catch "Body Armour" 10(8 hours ago, 1 file, 7+ 7-) 13https://github.com/crawl/crawl/commit/d93e6df79078 20:10:13 03dolorous02 07* 0.34-a0-940-g473fb080b9: Don't mention "standing" in Cloud status desc. 10(3 minutes ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/473fb080b9bf 20:57:58 <12e​bering> in the Lore god 2 is Sheza & Segol who were turned to salt by the good gods and that's why there's the desolation 20:58:08 <12e​bering> forbidden to actually create god 2 21:03:00 <02D​arby> you have to create god 3 21:08:55 <09h​ellmonk> god 3 doing something wacky with your stats (because there are 3 of them u see) 22:35:11 Unstable branch on crawl.develz.org updated to: 0.34-a0-940-g473fb080b9 (34) 22:37:33 <06d​olorous_84348> Indeed. And yet there's still that one unique seeking Sheza. It could be worse: I imagine in some parallel universe, the two are Segol and Shustar who turned worshippers into supermen of sorts, until the other gods saw them as a real threat and made their realm into the Desolation of Kryptonite. 🙂 22:55:32 03DracoOmega02 {Implojin} 07[stone_soup-0.33] * 0.33.1-6-gcbc0ba102c: Fix a rare Nobody / shadow mimic crash (DewdropsOTG) 10(3 months ago, 1 file, 15+ 2-) 13https://github.com/crawl/crawl/commit/cbc0ba102c02 22:55:50 <03i​mplojin> should fix the CAO paragon crash, it's already fixed in trunk 22:56:48 Windows builds of master branch on crawl.develz.org updated to: 0.34-a0-940-g473fb080b9 23:13:37 Unstable branch on cbro.berotato.org updated to: 0.34-a0-940-g473fb080b9 (34) 23:14:28 04Build failed for 08stone_soup-0.33 @ cbc0ba10 06https://github.com/crawl/crawl/actions/runs/18456504684 23:26:20 03Medrano8302 {Implojin} 07[stone_soup-0.33] * 0.33.1-7-g9421df488d: Fix zlib not building on macOS 10(3 months ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/9421df488d69 23:32:44 04Build failed for 08stone_soup-0.33 @ 9421df48 06https://github.com/crawl/crawl/actions/runs/18457063290 23:38:27 <03i​mplojin> hm 23:48:39 03Medrano8302 {Implojin} 07[stone_soup-0.33] * 0.33.1-8-g8f697b7bc7: Fix freetype and libpng not building on macOS 10(3 months ago, 2 files, 2+ 2-) 13https://github.com/crawl/crawl/commit/8f697b7bc752 23:48:43 <03i​mplojin> let's see if that works 23:54:31 Monster database of master branch on crawl.develz.org updated to: 0.34-a0-940-g473fb080b9