00:45:28 Monster database of master branch on crawl.develz.org updated to: 0.33-a0-855-g853641c8f9 04:33:55 Experimental (bcrawl) branch on underhound.eu updated to: 0.23-a0-5261-gd9800d219b 05:57:24 03regret-index02 07* 0.33-a0-856-g036c31cd67: Remove deep dwarf dummy monsters 10(28 hours ago, 10 files, 8+ 50-) 13https://github.com/crawl/crawl/commit/036c31cd6790 05:57:24 03regret-index02 07* 0.33-a0-857-gf4c381edbf: Make (glowing orange) brains unblindable 10(28 hours ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/f4c381edbfaa 05:57:24 03regret-index02 07* 0.33-a0-858-gdbd929141c: A handful of additional tiles 10(28 hours ago, 13 files, 12+ 0-) 13https://github.com/crawl/crawl/commit/dbd929141cf8 05:57:24 03regret-index02 07* 0.33-a0-859-gef3346897f: Yet more tension adjustments 10(4 minutes ago, 4 files, 92+ 107-) 13https://github.com/crawl/crawl/commit/ef3346897f09 08:30:13 03regret-index02 07* 0.33-a0-860-g79430971fb: Temporarily nerf nekomata (until later Pan reworks) 10(2 hours ago, 4 files, 11+ 11-) 13https://github.com/crawl/crawl/commit/79430971fbc0 08:30:13 03regret-index02 07* 0.33-a0-861-gba96422312: Tweak a changelog entry 10(2 hours ago, 1 file, 3+ 1-) 13https://github.com/crawl/crawl/commit/ba96422312c2 08:32:12 kuniqs (L20 MDGl) ERROR in 'god-companions.cc' at line 866: apostle Wargrak not found (Vaults:2) 08:49:44 03dolorous02 07* 0.33-a0-862-g796593f022: Fix comment typo. 10(35 seconds ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/796593f022a5 13:53:57 person50605 (L1 DjCj) Crash caused by signal #6: Aborted (D:1) 16:20:56 New branch created: pull/4304 (1 commit) 13https://github.com/crawl/crawl/pull/4304 16:20:57 03geekosaur02 07https://github.com/crawl/crawl/pull/4304 * 0.33-a0-863-ga07bddce68: only deploy docs on main repo 10(4 minutes ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/a07bddce68ae 16:23:09 03geekosaur02 07https://github.com/crawl/crawl/pull/4304 * 0.33-a0-863-g4567f4fa8e: only deploy docs on main repo 10(6 minutes ago, 1 file, 1+ 1-) 13https://github.com/crawl/crawl/commit/4567f4fa8e6a 16:23:39 snackwell (L17 MiHu) ERROR in 'god-companions.cc' at line 866: apostle Rocco not found (Lair:3) 16:37:16 03geekosaur02 07https://github.com/crawl/crawl/pull/4304 * 0.33-a0-863-g0eff0fc90f: only deploy docs on main repo 10(20 minutes ago, 1 file, 2+ 2-) 13https://github.com/crawl/crawl/commit/0eff0fc90f51 16:37:28 Unstable branch on underhound.eu updated to: 0.33-a0-862-g796593f022 (34) 16:38:22 03geekosaur02 07https://github.com/crawl/crawl/pull/4304 * 0.33-a0-863-gb47800476f: only deploy docs on main repo 10(21 minutes ago, 1 file, 2+ 2-) 13https://github.com/crawl/crawl/commit/b47800476fcd 17:44:40 -!- MakMorn_ is now known as MakMorn 20:39:20 -!- 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 20:39:20 -!- The topic of #crawl is: Play Dungeon Crawl Stone Soup online now! Type ??online for instructions, ??lg / !lg for play stats | PM Sequell for long queries | http://crawl.develz.org | FooTV game replays: ??footv for instructions | #crawl-dev for dev discussion, #crawl-offtopic for offtopic 21:19:08 Good idea geekosaur 21:20:00 RE: the recent apostle errors, think we've seen a few issues 21:20:02 noticed something weird 21:20:10 static apostle_data& _get_saved_apostle(const monster& apostle) 21:20:13 starts from 0? 21:20:43 int get_num_apostles() 21:20:48 max(0, (int)apostles.size() - 1); 21:20:52 also shifts by 1? 21:32:54 <04d​racoomega> Obviously there is a bug in there somewhere, but it's worth noting that one of the saved apostle slots is for the candidate to recruit, and not one you actually have 21:33:03 <04d​racoomega> Which is where there are 4 of them 21:33:31 Which is slot 0? 21:33:38 <04d​racoomega> Probably 21:33:44 hmmm 21:33:55 <04d​racoomega> (I don't remember off the top of my head, but it makes more sense for it to be first, not last, since you necessarily have a candidate before having any apostles) 21:34:34 Sure, though I would have done it the other way around, since then the new candidate is always at the end and you just add a new candidate at the end 21:34:45 doesn't really matter with just 4 though, perf wise 21:35:13 or I'd have done it as std::optional apostle_recruit; 21:35:45 hmm 21:35:55 <04d​racoomega> (It really didn't seem worth worrying about when the size maxes at 4, yes. Though there are a couple things I would do differently now anyway) 21:36:15 maybe an idea for debugging would be to stick an assertional assert that checks if the one that is not found is the 0th 21:36:25 to see if we're calling _get_saved_apostle for the recruit, I mean 21:38:51 I can't type 21:38:51 additional assert 21:38:51 assertional assert 21:38:58 very useful idea 21:40:22 <04d​racoomega> It might actually help if crash dumps listed what apostles you have (regular dumps do) 21:40:33 That would help too :D 21:41:08 !crashdump snackwell 21:41:16 <04d​racoomega> Oh! 21:41:16 is that the command? 21:41:26 !crashlog snackwell 21:41:26 <04d​racoomega> (It's !crashlog) 21:41:30 1. snackwell, XL17 MiHu, T:24367 (milestone): https://cbro.berotato.org/morgue/snackwell/crash-snackwell-20250214-232330.txt 21:41:31 <04d​racoomega> But there's actually something very conspicuous here 21:41:35 <04d​racoomega> Rocco fades away. 21:41:38 <04d​racoomega> It's a phantom mirror copy 21:42:00 <04d​racoomega> Which the game is probably trying to treat like the real apostle dying, and getting confused in some way 21:42:18 <04d​racoomega> Not sure why that specific error, but I can imagine something not working right. It's highly suspicious. 21:42:28 right, becuase this logic is kinda brittle / doing a lot of name checking 21:42:42 <04d​racoomega> !crashlog kuniqs 21:42:47 the logic in general is broken if you can have two monsters with the same name Ithink 21:42:49 <04C​erebot> 29. kuniqs, XL20 MDGl, T:41574 (milestone): https://underhound.eu/crawl/morgue/kuniqs/crash-kuniqs-20250214-153212.txt 21:42:58 <04d​racoomega> Yeah, same here 21:43:12 <04d​racoomega> Well, you shouldn't be swearing vengeance over phantom mirror copies in any case 21:43:32 <04d​racoomega> Regardless of any other brittleness (and yeah, there's a fair bit of Beogh code that is unfortunately brittle, I admit >.>) 21:43:57 MIght be as simple as moving the places that use name to also use mid? 21:44:50 <04d​racoomega> What places do lookup by name? 21:44:55 <04d​racoomega> That is doing lookup by mid 21:45:06 I swear I saw one but maybe not, let me look before I keep talking out o fmy rear 21:45:07 <04d​racoomega> But the copy has a different mid than the real one, which is why it can't find it 21:45:23 <04d​racoomega> (In fact, looking closer, that is surely why it is crashing) 21:45:37 <04d​racoomega> It's trying to do bookeeping on an apostle with a mid that isn't saved - because it's not a real apostle 21:45:51 I was thinking of apostle_has_unique_name 21:45:54 but that's not the problem 21:45:57 nor is it wrong 21:46:06 it's just trying to avoid this sort of confusion :D 21:46:15 but yeah, that tracks 21:46:42 Does phantom mirror like, copy construct and then overwrite a flag? 21:46:47 and t he mid 21:47:54 <04d​racoomega> Every single monster, period, has a unique mid (there have been bugs in the past where this was not the case, but it's supposed to be the case and has almost always been the case). Clones or whatever, from any source, get a new mid. 21:48:21 <04d​racoomega> Various forms of cloning do mostly manual copying of selective parts of a monster, I believe 21:48:24 so clone_mons jus tneeds to unset the flag 21:48:28 <04d​racoomega> (Some enchants are preserved, some are not, etc.) 21:48:43 *mons = *orig; 21:48:51 Yeah, copy constructs, then erases, I think 21:49:04 <04d​racoomega> Well, I think the game just assumes any friendly MONS_ORC_APOSTLE must be one of yours 21:49:26 <04d​racoomega> (But let me actually look at the code :P) 21:49:35 // Remove Beogh's Touch from an apostle of Beogh may get very confused when they die if (mons->has_ench(ENCH_TOUCH_OF_BEOGH)) mons->del_ench(ENCH_TOUCH_OF_BEOGH); 21:49:42 Seems related 21:50:12 Yeah you're right 21:50:14 else if (mons.type == MONS_ORC_APOSTLE) beogh_swear_vegeance(mons); 21:50:21 and another case bellow 21:50:37 <04d​racoomega> Actually, I am a little confused nowbeogh_swear_vegeance is only called inside a block that checks mons.is_divine_companion() first, and that vetoes summons) 21:51:09 <04d​racoomega> So are phantom mirror copies not counting as summoned anymore or something? 21:51:31 only if they're has_ench ENCH_SUMMON? 21:51:37 which I'd think it should 21:51:43 <04d​racoomega> Which they do, yes (I double-checked) 21:52:10 <04d​racoomega> Oh 21:52:29 Are enchanments mutually exclusive? 21:52:30 <04d​racoomega> C++ bool monster::is_summoned() const { return has_ench(ENCH_SUMMON) && !is_unrewarding(); } It's the fact that the apostle itself has MF_HARD_RESET and such 21:52:31 or something? 21:52:58 <04d​racoomega> Which gets copied on cloning, which makes a mirror of an apostle not count as a summon 21:53:07 <04d​racoomega> Presumably also if you mirrored one of The Royal Jelly's spawns, too 21:53:11 doesn't it also make a apostle not count as a summon? 21:53:13 <04d​racoomega> Does that mean you could take one of them across stairs? 21:53:22 or am Inot getting it 21:54:22 Yeah I think it's always set 21:54:24 // Follower apostles should drop corpses (but nothing else) || mons.flags & MF_HARD_RESET && !mons.is_divine_companion() 21:54:25 <04d​racoomega> Hmm... no, seemingly not 21:54:32 or that condition wouldn't beneeded? 21:54:52 <04d​racoomega> Maybe they're just MF_NO_REWARD? 21:54:58 wait this is self contradictory isn't it? 21:55:01 <04d​racoomega> Either would be sufficient 21:55:28 in mons_place.cc 21:55:29 else if (mon->type == MONS_ORC_APOSTLE) mon->flags |= (MF_APOSTLE_BAND | MF_HARD_RESET); 21:56:06 but elsewhere in the same file: 21:56:07 member->flags |= (MF_HARD_RESET | MF_APOSTLE_BAND | MF_NO_REWARD); member->mark_summoned(); 21:56:50 _place_monster and _place_monster_aux don't have the same behavior 21:56:54 idk what the difference is 21:57:11 <04d​racoomega> What's contradictory there? The second one is setting flags on the band follower of an apostle 21:57:18 <04d​racoomega> Not on the apostle itself 21:57:54 <04d​racoomega> (And the first one is for the hostile apostle) 21:58:40 Ah, got it 21:58:51 <04d​racoomega> But really, all this is probably solved by making phantom mirror remove these flags 21:59:13 Probably, because phantom mirrored creatures don't drop things anyway 21:59:15 <04d​racoomega> Being a summon already causes the desired behavior of no XP and no item drops 22:03:55 Agreed 22:05:09 Or bandaid is_divine_Companion to say falsefor phantom mirror always based on enchanchment 22:05:15 but removing t he flag is probably cleaner 22:05:46 <04d​racoomega> I mean, this does cause weird behavior when you phantom mirror other unrewarding things, at present 22:05:58 <04d​racoomega> So it should be done more generally, yes 22:06:58 The tradeoff of course is the more general the fix, the more general the risk of upsetting another bit of balanced-together code 22:07:16 but we aren't cowards :D 22:07:59 <04d​racoomega> Things should be made better. And if making them better breaks something else, then we can fix that, too 😛 22:08:08 Exactly :D 22:08:39 <04d​racoomega> (Going to try to finish off this undead stuff first. Very real possibility of it being ready for trunk before my day is out) 22:08:47 Very cool 22:09:29 The Beogh code isn't as bad as I thought at first, but could use a few more comments - the recruit in slot one thing really thru me :D 22:09:37 tho maybe I just didn't read the comment 22:10:02 besides that I spoke too soon, it's largely reasonable 22:11:15 <04d​racoomega> Glad you think so ^^; (But yes, apparently there's no comment on the logic of get_num_apostles() at all, and it would make sense for there to be) 22:12:02 I'll put in a PR with that 22:15:21 <04d​racoomega> I mean, I can write that myself when I fix this shortly 22:15:38 Also have a few othe typo fixes and the like 22:31:45 Feel free to fire it into the sun, or cherry-pick it into your branch 22:31:52 but I just pushed it 22:31:59 New branch created: pull/4305 (1 commit) 13https://github.com/crawl/crawl/pull/4305 22:32:00 03Cgettys02 07https://github.com/crawl/crawl/pull/4305 * 0.33-a0-854-ga0a3e0da5a: style: a few cleanups in Beogh apostle code 10(7 minutes ago, 3 files, 30+ 26-) 13https://github.com/crawl/crawl/commit/a0a3e0da5a5d 22:34:05 I know you can do it it yourself, but sometimes it's easier to catch typos if you didn't write them yourself :D 22:34:11 (besides, my IDE does a good job on those :D) 23:35:24 Unstable branch on crawl.develz.org updated to: 0.33-a0-862-g796593f022 (34) 23:58:13 Windows builds of master branch on crawl.develz.org updated to: 0.33-a0-862-g796593f022