From 141b5689446d9cb4566f791a918240b0147716f5 Mon Sep 17 00:00:00 2001 From: Michael Meyer Date: Wed, 15 Jun 2022 17:40:56 -0400 Subject: [PATCH] Make monsters trigger landmines based on weight The 1/3 likelihood of a monster setting off a landmine seemed a little arbitrary to me, especially in that it applied equally to all monsters, from giants to insects. Change the flat 33% chance to one based on the monster's body weight, so that lightweight monsters have little to no chance of setting off a mine, with the likelihood increasing from there with the monster's weight. With a trigger weight of 400, as it is in this commit, a dingo has a 0% chance of setting off a landmine, a gelatinous cube the same 33% chance as before, an elf a 50% chance, a human a 72% chance, and something the size of a dragon (ignoring the reduced likelihood for flying monsters) a 91% chance. --- src/trap.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/trap.c b/src/trap.c index 0b86e33c3..0663dbc4c 100644 --- a/src/trap.c +++ b/src/trap.c @@ -2243,8 +2243,11 @@ trapeffect_landmine( struct permonst *mptr = mtmp->data; coordxy tx = trap->tx, ty = trap->ty; - if (rn2(3)) - return Trap_Effect_Finished; /* monsters usually don't set it off */ + /* heavier monsters are more likely to set off a land mine; on the + other hand, any mon lighter than the trigger weight is immune. */ +#define MINE_TRIGGER_WT (WT_ELF / 2) + if (rn2(mtmp->data->cwt + 1) < MINE_TRIGGER_WT) + return Trap_Effect_Finished; if (is_flyer(mptr)) { boolean already_seen = trap->tseen; @@ -2293,6 +2296,7 @@ trapeffect_landmine( } return Trap_Effect_Finished; } +#undef MINE_TRIGGER_WT static int trapeffect_rolling_boulder_trap(