00:47:18 03Isaac Clancy02 07https://github.com/crawl/crawl/pull/3647 * 0.32-a0-1715-gef4783fa35: Fix configure.py not handling compiler arguments 10(64 seconds ago, 4 files, 43+ 22-) 13https://github.com/crawl/crawl/commit/ef4783fa350a 00:48:23 03Isaac Clancy02 07https://github.com/crawl/crawl/pull/3647 * 0.32-a0-1715-g27aa9b9d07: Fix configure.py not handling compiler arguments 10(2 minutes ago, 4 files, 43+ 22-) 13https://github.com/crawl/crawl/commit/27aa9b9d0737 01:07:36 03Isaac Clancy02 07https://github.com/crawl/crawl/pull/3647 * 0.32-a0-1715-g2d4c5d1120: Fix configure.py not handling compiler arguments 10(21 minutes ago, 5 files, 44+ 23-) 13https://github.com/crawl/crawl/commit/2d4c5d112039 01:18:17 03Isaac Clancy02 07https://github.com/crawl/crawl/pull/3647 * 0.32-a0-1715-g9c65b0e8a9: Fix configure.py not handling compiler arguments 10(32 minutes ago, 7 files, 48+ 26-) 13https://github.com/crawl/crawl/commit/9c65b0e8a962 02:15:56 03Isaac Clancy02 07https://github.com/crawl/crawl/pull/3647 * 0.32-a0-1716-g1c4416ae30: Fix warning '*/' found outside of comment 10(31 minutes ago, 10 files, 73+ 73-) 13https://github.com/crawl/crawl/commit/1c4416ae30c8 02:26:38 03Isaac Clancy02 07https://github.com/crawl/crawl/pull/3647 * 0.32-a0-1717-g9b25f5088a: Fix option 'Gm' has been deprecated 10(39 seconds ago, 7 files, 235+ 224-) 13https://github.com/crawl/crawl/commit/9b25f5088ab4 02:38:24 03Isaac Clancy02 07https://github.com/crawl/crawl/pull/3647 * 0.32-a0-1718-g1b9691e9f4: Fix warning: ignoring unknown option '/arch:SSE' 10(20 seconds ago, 2 files, 4+ 4-) 13https://github.com/crawl/crawl/commit/1b9691e9f4b1 03:34:10 Experimental (bcrawl) branch on underhound.eu updated to: 0.23-a0-5208-geafff8c3b6 05:20:42 Unstable branch on crawl.akrasiac.org updated to: 0.32-a0-1708-g51ab8bf (34) 05:46:03 -!- rozlav5 is now known as rozlav 08:50:24 <02M​onkooky> continuing the conversation from https://discord.com/channels/205277826788622337/205316046230388737/1258982585460199495 Had a thought for berserkitis- triggers with likelyhood inversely proportional to damage dealt 08:52:09 <02M​onkooky> If you do very big damage, berserkitis will not trigger If you miss/AC blocks all dam then berserkitis will very likely trigger 08:59:19 <02M​onkooky> The goal bein to make zerkitis not trigger when fighting a complete chump; in particular remove the 'fought a D:15 rat now I gotta rest' and 'oh no a D:15 rat better stairdance it so nothing shows up while I'm berserk' problems zerkitis currently has 09:01:04 <02M​onkooky> Maybe would also incidentally make zerkitis more likely to trigger in time to be useful in fights where you'd want to zerk 09:01:51 <06p​leasingfungus> capping damage by enemy hp? 09:02:31 <06p​leasingfungus> funny theme. “i missed?! grargrhlbghgl” 09:03:05 <06p​leasingfungus> wonder if ‘damage vs chump’ and ‘damage vs enemies in a big fight’ is meaningfully different 09:03:18 <06p​leasingfungus> there aren’t many d:15 rats around these days 09:07:15 <02M​onkooky> yeah there's a real lack of distinction between lone chump and chump with enough friends to be legitimately scary 09:30:07 <13q​wqwqwqwqwqwqw> I think I wouldn't make it trigger on a miss probably? missing is reasonably common against popcorn still 09:31:11 <13q​wqwqwqwqwqwqw> I sort of like the idea of having it only trigger when you hit but hp_remaining/damage_dealt is somewhat large 09:31:50 <13q​wqwqwqwqwqwqw> in particular making it never trigger on killing blows seems like it would help a lot 09:32:33 <13q​wqwqwqwqwqwqw> this does mean though that it is more likely to trigger with small fast weapons than with big slow weapons, which is maybe not great 09:32:43 <13q​wqwqwqwqwqwqw> though at least berserk is stronger on small fast weapons 09:40:06 <13q​wqwqwqwqwqwqw> I guess to suggest a specific formula, maybe: - never trigger on a miss/block - trigger chance on a hit is C * (1 - damage_dealt / hp_remaining_after_damage), where C is some constant depending on number of berserkitis sources (larger than the current 0.2 per source... maybe 0.5 or something) 09:42:26 <13q​wqwqwqwqwqwqw> or maybe it's slightly better to do C (1 - 2 * damage_dealt / hp_before_damage), not sure 09:42:44 <13q​wqwqwqwqwqwqw> one possible complication is that brand damage is often batched separately 09:43:13 <13q​wqwqwqwqwqwqw> would have to look at melee code to know how easy it is to look at the total damage dealt to a monster by weapon + brand in an attack, and trigger it then 09:43:17 <13q​wqwqwqwqwqwqw> but you'd probably want to do that 09:44:27 <06p​leasingfungus> my intuition is that it should be pretty doable… but only moderate confidence 09:45:39 <06p​leasingfungus> also want to handle distort, which is slightly different from other brand damage, and draining, which does two separate pieces of brand damage 09:45:44 <06p​leasingfungus> iirc 09:48:12 <13q​wqwqwqwqwqwqw> I guess a simpler-to-implement alternative is to just look at hp_remaining_after_damage / max_hp at the end of handling an attack - i.e. only trigger berserkitis (with some chance) if you hit a monster and it is still mostly uninjured 09:51:33 <13q​wqwqwqwqwqwqw> maybe good then not to have a strict cutoff (other than never triggering it if you killed the monster), though could make it much less likely if the monster is almost dead 09:52:04 <06p​leasingfungus> could also look at initial hp vs final 09:52:17 <06p​leasingfungus> that seems maybe simpler than trying to catch every delta en route 09:52:21 <13q​wqwqwqwqwqwqw> oh, that's true, we can probably just figure out damage dealt that way 09:53:15 <13q​wqwqwqwqwqwqw> record it at the start of handling the attack, then if the monster is still around at the very end of the attack we look at it again 09:53:57 <13q​wqwqwqwqwqwqw> and use the C (1 - 2 * damage_dealt / hp_before_damage) formula or something similar 10:32:25 <04d​racoomega> This is actually remarkably easy in most cases, I believe. Brand damage is just saved as a member int, and so is raw weapon damage, so you can look at their sum easily 10:32:39 <04d​racoomega> Sign of Ruin is currently doing a similar thing to check if the total of those is at least 1 10:33:15 <04d​racoomega> (So that it works for Pain brand hits that had 0 weapon damage) 10:33:42 <04d​racoomega> Although I guess the conversation moved on to a possibly better solution anyway ^^; 10:49:43 <04d​racoomega> Not entirely sure what I think of this proposed berserkitis change, but could be worth trying out, anyway. Not sure it changes the calculus on when it feels like a reasonable idea to hit something (since damage can be pretty random in Crawl) but possibly still makes it feel a little better on average regardless. Mild concern that this makes badmut berserkitis even worse on caster types (who - if less able to kill anything quickly 10:49:43 in melee, are now more likely to berserk whenever they try at all) but not certain how much that matters as you always had to be extra-careful about attacks with them in any circumstances it seemed they would matter 11:10:02 <13q​wqwqwqwqwqwqw> I mainly see it as probably making it bit less annoying 11:12:38 <04d​racoomega> It's certainly possible. (As I said, I have no objections to seeing what it feels like) 11:40:30 <06d​olorous_84348> Chiming in late, but the proposed Trog gifts changes do look interesting; gifting artefacts so they can't be just rebranded to whatever does seem fitting flavor-wise. 12:28:57 insolentduck (L9 MiBe) ERROR in 'mon-util.cc' at line 4993: invalid kill category (D:7) 12:38:45 <06d​olorous_84348> Regarding the TrogLoud effect: maybe the noise's motivating your brothers in arms could be flavored as Trog's roaring divine encouragement at them? 17:57:28 insolentduck (L4 MiBe) ERROR in 'mon-util.cc' at line 4993: invalid kill category (D:3) 18:03:03 !crashlog insolentduck 18:03:04 3. insolentduck, XL4 MiBe, T:1836 (milestone): http://crawl.akrasiac.org/rawdata/insolentduck/crash-insolentduck-20240707-005726.txt 18:49:58 -!- robertmeta_ is now known as robertmeta 18:50:08 -!- adept5938 is now known as adept593 18:50:09 -!- kf_ is now known as kf 19:06:51 interesting. back to trying to reproduce this, trying on D:4 now, and I just got: _DEAD MONSTER takes 6 damage from cloud: buggy goodness. 19:06:59 "buggy goodness"? 19:07:38 (also I find it interesting that it takes damage after it's dead) 19:47:49 still can't reproduce it 😞 19:48:06 <04d​racoomega> I feel bad I haven't made time to look into this myself yet, as it's surely my fault 19:48:23 <04d​racoomega> (I have been like 95% sure it's something about the impact damage I added to miasma_monster) 19:48:52 <04d​racoomega> But I've been sidetracked by other design problems and also plumbing problems >.> 19:57:43 <04d​racoomega> Okay, the 'buggy goodness' part is a little odd, but I did notice here that cloud side-effects are applied before normal cloud damage, which is why it's hitting a dead monster again 19:58:19 <04d​racoomega> Direct damage is applied by some other cloud side-effects, but those are on clouds that have no 'normal' damage they can follow up with 19:58:38 <04d​racoomega> I had just falsely assumed side-effects happened after the regular cloud damage and not before it 19:58:50 <04d​racoomega> ...since they're afterward for basically everything else, like beams and brands 19:59:35 <04d​racoomega> But even if the monster was already dead before being hit again, I'm not sure how that could make the cloud itself return buggy info on itself. Cloud shouldn't care if there is or isn't something inside it 20:06:43 so, what I have just found is that you added a direct call to (monster::)hurt, with the cloud's agent as the agent parameter 20:08:48 And then I find https://github.com/crawl/crawl/blob/master/crawl-ref/source/monster.cc#L4396-L4399 20:09:35 which makes me wonder if, since it's a vault-defined cloud, it's getting YOU_FAULTLESS which find_agent doesn't handle 20:10:05 <04d​racoomega> That linked line only applies if there is a damage mirror ench involved though, no? 20:10:29 I was wondering if that's why I can't reproduce it 20:11:34 <04d​racoomega> How could there be damage mirror involved in any of this, though? Unless I've forgotten how the vault works. Doesn't it just spawn miasma beneath a trapped human, kill it, and replace it with a zombie? 20:12:41 yes 20:16:27 <04d​racoomega> Hmm... looking at that most recent crashlog again, it looks like it's not actually crashing in cloud handling at all, is it? 20:17:22 <04d​racoomega> For some reason I thought it was. 20:20:49 <04d​racoomega> If only this was telling us what function beneath handle_monster_move was looking for an agent of something 20:23:55 we can't tell. with gdb we'd get the missing functions 20:24:15 whatever it is is probably static 20:24:17 <04d​racoomega> Oh, wait, my mistake, _actor_apply_cloud is beneath this 20:24:46 I did see actor::agent calls find_agent 20:24:50 er, cloud::agent 20:25:36 <04d​racoomega> But actor_apply_cloud is not static, so shouldn't it show up on the stack trace? 20:25:53 leading underscore in crawl source usually means static? 20:26:17 <04d​racoomega> No, there's an _actor_apply_cloud that is static and an actor_apply_cloud that calls the former, which is not 20:26:42 <04d​racoomega> But the non-static one seems to have to get called first 20:28:16 <04d​racoomega> Ah. I have some idea. 20:29:03 <04d​racoomega> So. The lua for the vault binds a function to the monster dying. Which contains -- Won't place the monster if there's a cloud there dgn.delete_cloud(pt[1].x, pt[1].y) 20:29:16 <04d​racoomega> So I think it deletes the cloud before the cloud code is itself finished 20:29:56 <04d​racoomega> And _actor_apply_cloud is still holding a reference to it 20:30:14 <04d​racoomega> And what exactly happens at that point is possibly anyone's guess 20:31:36 <04d​racoomega> Might actually be undefined 20:32:03 <04d​racoomega> I wonder if the comment is even correct that the code won't place a zombie if there's a cloud there? 20:33:08 <04d​racoomega> It, in fact, seems to work just fine with the cloud still there 20:33:24 <04d​racoomega> It is possible this was not true when this code was written 13 years ago, but it seems to work fine now 20:36:24 <04d​racoomega> But I suspect this is the cause of the bug: lua deleting a still-referenced cloud while cloud code is still doing something with it. Deleting that line from the lua doesn't seem to negative affect the function of the vault and fixes this particular problem. Side-effects happening before normal cloud damage is a little weird and I can put a death check in there also, but ultimately only the cause of this bug by coincidence, imo 20:37:00 <04d​racoomega> (Since this could have been triggered by ever putting any other access to the cloud in after damage was dealt) 22:33:48 -!- robin_ is now known as robin 22:35:51 Unstable branch on crawl.develz.org updated to: 0.32-a0-1708-g51ab8bf2ec (34) 22:58:50 Windows builds of master branch on crawl.develz.org updated to: 0.32-a0-1708-g51ab8bf2ec 23:24:01 Unstable branch on cbro.berotato.org updated to: 0.32-a0-1708-g51ab8bf2ec (34) 23:55:36 Monster database of master branch on crawl.develz.org updated to: 0.32-a0-1708-g51ab8bf2ec