00:34:38 Unstable branch on cbro.berotato.org updated to: 0.34-a0-2022-g831a5dbace (34) 00:40:36 <04d​racoomega> I still have no idea how this is happening. Like, the crash clearly looks to be because the shadow mimic is trying to throw a dart (and failing), but they specifically aren't supposed to try to throw darts and I cannot convince mine to throw a dart, even moving the proc rate to 100% 00:41:29 <11O​dds> I can have a poke around if you'd like a second pair of eyes 00:44:13 <08o​____0> !crash stonerkitturk 00:44:16 <04C​erebot> 29. StonerKitturk, XL9 KoBr, T:5540 (milestone): https://crawl.akrasiac.org/rawdata/StonerKitturk/crash-StonerKitturk-20260116-061807.txt 00:46:39 <04d​racoomega> I mean, feel free 00:47:29 <04d​racoomega> Like, the trigger block of code is: C++ const item_def* missile = atks[0].atk.weapon->base_type == OBJ_MISSILES ? atks[0].atk.weapon : nullptr; if (will_have_passive(passive_t::shadow_attacks) && (!missile || (missile->sub_type != MI_DART && missile->sub_type != MI_THROWING_NET))) { 00:47:29 dithmenos_shadow_shoot(atks[0].beam.target, missile); } So somehow dithmenos_shadow_shoot is getting called despite them having just thrown curare 00:48:35 <04d​racoomega> (I'm not certain the exact cause of the crash after that, but I actually think it may have to do with a monster refusing to pick up unbranded darts since they're useless. It's somewhat beside the point since it shouldn't be getting that far anyway) 00:48:46 <11O​dds> Sure looks impossible 🙂 00:57:41 <08o​____0> It's the !missile condition, dunno how that happened 00:57:41 <08o​____0> https://cdn.discordapp.com/attachments/747522859361894521/1461630463595778079/TrB5Vow.png?ex=696b40f2&is=6969ef72&hm=f1eacf40048ceac4522cae5382e35618098ae2085bec90746cb889c48a801b3b& 00:59:58 <04d​racoomega> How did you get this? 01:01:23 <08o​____0> Debugger in vscode 01:01:24 <08o​____0> https://cdn.discordapp.com/attachments/747522859361894521/1461631406487638147/tj2Ebx9.png?ex=696b41d3&is=6969f053&hm=603feec9ba8716afd244fbc746c63de4d88c7dd67f5671b9c50e455ec6937b21& 01:02:01 <08o​____0> Well I put a breakpoint on dithmenos_shadow_shoot and threw darts until the crash triggered 01:02:43 <08o​____0> I had to throw a lot of them.... maybe it only happens on the last dart left? 01:02:52 <04d​racoomega> Oh, huh. I wonder. 01:02:54 <11O​dds> Yes it just happened to me on my last dart 01:03:14 <11O​dds> (Of many, seemed suspicious) 01:03:17 <08o​____0> hah, yeah somethings getting lost that's funny 01:03:47 <11O​dds> Yeah indeed 01:03:47 <11O​dds> https://cdn.discordapp.com/attachments/747522859361894521/1461632007682392249/image.png?ex=696b4262&is=6969f0e2&hm=ff56862b4de52b0884913b1defa7729662505fb8d71848b51095f423d76bee9d& 01:03:53 <04d​racoomega> I guess the item is being reset at this point somehow 01:03:55 <11O​dds> (It doesn't always crash, which is convenient) 01:04:02 <04d​racoomega> Huh. Also curious. 01:04:13 <04d​racoomega> (But as I said: probably also somewhat beside the point) 01:04:22 <11O​dds> Well Dith only procs sometimes 01:04:29 <11O​dds> My shadow didn't actually mimic that attack 01:04:51 <08o​____0> I never noticed the shadow mimicing the dart throwing 01:04:52 <04d​racoomega> Anyway, if that's the issue, I should be able to fix the actual problem. 01:05:00 <04d​racoomega> Thanks you two ^^; 01:05:16 <04d​racoomega> (Like, I am not sure exactly what shape the fix will have, but knowing the actual problem helps a lot) 01:13:09 <04d​racoomega> I think the simplest is actually checking for the identity of the missile before we shoot, instead of immediately before the Dith trigger. (The issue is that the ranged_attack holds a reference to the real item stack in your inventory, and when _player_shoot() lowers the quantity to 0, it sets it that item to OBJ_UNASSIGNED. Which isn't a dart, of course. 01:13:36 <04d​racoomega> So that it's 'unsafe' to check the ammo used after the attack has been fired. 01:14:17 <04d​racoomega> (I considered copying it instead, but there's a bunch of scoping issues that could result from that when I think this is the only situation that could interact with it at the moment anyway) 01:16:13 <11O​dds> nods wisely in the manner of one who knows anything about this bit of the code 01:35:19 03DracoOmega02 07* 0.34-a0-2023-g65ca6418d6: Fix a shadow mimic crash with throwing darts (Odds, Rypofalem) 10(2 minutes ago, 3 files, 13+ 13-) 13https://github.com/crawl/crawl/commit/65ca6418d639 02:30:01 03DracoOmega02 07* 0.34-a0-2024-gd4ab456d0b: Correct protean talisman description 10(39 seconds ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/d4ab456d0be3 04:35:02 Experimental (bcrawl) branch on underhound.eu updated to: 0.23-a0-5261-gd9800d219b 05:18:50 <11O​dds> A thing I think is a bug and understand but am not sure of the right fix for: When you change the terrain under a tentacle segment, e.g. by using summon forest or hellfire mortar, the whole tentacle just disappears. This is quite sad for summoning/translocations casters, and also rather powerful against the hostile tentacles. This is because changing terrain calls trigger_movement_effects, and in finalise_movement we destroy tentacles. 05:18:51 That makes sense in the case where they've actually moved, but seems unnecessary when they haven't. 05:23:06 <04d​racoomega> Seems easy enough to only do that when the position has actually changed, then. (Some other bits of that already use if (last_move_pos != pos())) 05:24:19 <11O​dds> trigger_movement_effects sets last_move_pos to pos() though 05:24:36 <11O​dds> Oh right yes that makes sense 05:27:18 <11O​dds> I do worry because trigger_movement_effects seems like it is a thing that could be called after some weird method of moving a monster where we should break the tentacle (i.e. does last_move_pos == pos() definitely guarantee the monster "hasn't moved"?) 05:36:47 <04d​racoomega> Well, whenever a monster does move, last_move_pos is set to where they were prior to that, if it wasn't already set to something. Basically the process is that monster::move_to() is called, 'remembering' where they were, then when finalise_movement() is called, it does post-move effects relative to the starting position. 05:37:21 <04d​racoomega> (If you call move_to() several times in a row without finalising, it considers only the first starting position. Gavotte can do this, for instance.) 05:38:43 <04d​racoomega> I cannot rule out that it is possible there is some circumstance where we'd want this to break a tentacle when it doesn't technically move, but I'd be at least a little surprised. (And we probably should be doing something else in that case anyway) 05:39:47 <04d​racoomega> Note that until the big movement code refactoring this version, this post-move tentacle removal code was actually only called by a couple methods of movement at all. (I folded it in to being more general, but most weird places couldn't have been relying on it since they weren't even doing it) 05:44:50 <11O​dds> Yeah it looks like in fact this is the only case it can get called on the tentacle (the other cases are stuff like recalling allies and taking stairs that tentacles cannot do) 07:14:42 Silenceoftheyaks (L7 KoMo) ASSERT(wpn && (wpn->base_type == OBJ_MISSILES || is_range_weapon(*wpn))) in 'ranged-attack.cc' at line 37 failed. (D:4) 10:40:16 New branch created: pull/5032 (1 commit) 13https://github.com/crawl/crawl/pull/5032 10:40:17 03CrawlOdds02 07https://github.com/crawl/crawl/pull/5032 * 0.34-a0-2023-gdfdccc41a4: Don't delete tentacles on terrain change 10(12 minutes ago, 1 file, 2+ 1-) 13https://github.com/crawl/crawl/commit/dfdccc41a4ca 11:24:18 03DracoOmega02 07* 0.34-a0-2025-gd2f7b3f20f: Fix monster hellfire mortar giving the player a cooldown (Planckenstein) 10(50 seconds ago, 1 file, 3+ 1-) 13https://github.com/crawl/crawl/commit/d2f7b3f20fc6 11:52:15 New branch created: pull/5033 (1 commit) 13https://github.com/crawl/crawl/pull/5033 11:52:16 03CrawlOdds02 07https://github.com/crawl/crawl/pull/5033 * 0.34-a0-2025-g2a7c58e0cf: Quickset skill target to maximum skill on talismans 10(7 minutes ago, 1 file, 7+ 1-) 13https://github.com/crawl/crawl/commit/2a7c58e0cfa5 13:40:28 HyperOdds (L27 NaAr) ASSERT(_valid()) in 'ray.cc' at line 229 failed. (D:1) 13:40:36 <11O​dds> Oooh it's me! 13:41:55 <11O​dds> !crash hyperodds 13:42:01 <04C​erebot> 9. HyperOdds, XL27 NaAr, T:53344 (milestone): https://underhound.eu/crawl/morgue/HyperOdds/crash-HyperOdds-20260116-204025.txt 13:42:31 <11O​dds> It was a zykzyl. Nothing else obvious going on. 13:46:58 <11O​dds> Ah, redirected its attack with Ru. 13:53:42 Ramael (L11 TeAE) ASSERT(wpn && (wpn->base_type == OBJ_MISSILES || is_range_weapon(*wpn))) in 'ranged-attack.cc' at line 37 failed. (D:10) 14:11:08 <08o​____0> Oh yeah, I think there's a similar problem with marionette and bolt of flesh. Easier to reproduce at will 14:11:24 <08o​____0> I suspect it's the same issue at least 14:12:35 <11O​dds> Yeah sounds the same 16:41:39 Unstable branch on underhound.eu updated to: 0.34-a0-2025-gd2f7b3f20f (34) 18:30:26 -!- The topic of #crawl-dev is: Crawl Development | https://github.com/crawl/crawl | Logs: http://s-z.org/crawl-dev/, temporarily http://crawl.akrasiac.org/logs/cheibriados/ | People with +v have commit access, devs on bridged discord as well | General Crawl-related chat to #crawl | Long stuff to a pastebin service, please 19:44:18 New branch created: pull/5034 (1 commit) 13https://github.com/crawl/crawl/pull/5034 19:44:19 03RypoFalem02 07https://github.com/crawl/crawl/pull/5034 * 0.34-a0-2026-gd61292620d: fix: Blade-form status text (Undo) 10(10 minutes ago, 1 file, 0+ 8-) 13https://github.com/crawl/crawl/commit/d61292620db2 20:17:38 03RypoFalem02 {WizardIke} 07* 0.34-a0-2026-g26f317322f: fix: Blade-form status text (Undo) 10(43 minutes ago, 1 file, 0+ 8-) 13https://github.com/crawl/crawl/commit/26f317322fb5 20:18:45 <08o​____0> I hate beam.cc lol. That one's difficult for me to track down but I am not familiar with how those are set up completely 20:33:46 03CrawlOdds02 {WizardIke} 07* 0.34-a0-2027-gfd489b4778: Don't re-enter shops after they reappear (Flugkiller) 10(7 days ago, 3 files, 32+ 26-) 13https://github.com/crawl/crawl/commit/fd489b477873 20:53:07 03WizardIke02 07* 0.34-a0-2028-gd81e0ca6b7: Remove the _find_erase function 10(10 minutes ago, 1 file, 4+ 11-) 13https://github.com/crawl/crawl/commit/d81e0ca6b751 21:08:10 03CrawlOdds02 {WizardIke} 07* 0.34-a0-2029-g9ce7d04fbe: Don't delete tentacles on terrain change 10(11 hours ago, 1 file, 2+ 1-) 13https://github.com/crawl/crawl/commit/9ce7d04fbe40 21:39:22 03person5060502 {WizardIke} 07* 0.34-a0-2030-g472da07804: Remove duplicated -Cast description 10(8 days ago, 1 file, 0+ 4-) 13https://github.com/crawl/crawl/commit/472da07804e7 21:46:55 03WizardIke02 07* 0.34-a0-2031-geecae2dc58: Remove the old Blade status description 10(3 minutes ago, 1 file, 0+ 8-) 13https://github.com/crawl/crawl/commit/eecae2dc5878