From ec4691a8599de08f6b0700b0893d24738889b7f8 Mon Sep 17 00:00:00 2001 From: PatR Date: Thu, 25 Jan 2024 14:12:05 -0800 Subject: [PATCH] fewer human corpses When a low-level trap is created with a dead pseudo-adventurer, usually make a player monster when the human case gets picked. They have default level and no inventory. They should probably be given montraits that force low level but this doesn't do that. --- src/mklev.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/mklev.c b/src/mklev.c index 294aa9030..847f51bbb 100644 --- a/src/mklev.c +++ b/src/mklev.c @@ -1693,7 +1693,7 @@ mktrap_victim(struct trap *ttmp) we're on dlvl 2 (1 is impossible) and b) we pass a coin flip */ if (kind == SLP_GAS_TRAP && !(lvl <= 2 && rn2(2))) - victim_mnum = PM_HUMAN; + goto human; break; case 1: case 2: victim_mnum = PM_DWARF; @@ -1706,8 +1706,7 @@ mktrap_victim(struct trap *ttmp) victim_mnum = PM_GNOME; /* 10% chance of a candle too */ if (!rn2(10)) { - otmp = mksobj(rn2(4) ? TALLOW_CANDLE : WAX_CANDLE, - TRUE, FALSE); + otmp = mksobj(rn2(4) ? TALLOW_CANDLE : WAX_CANDLE, TRUE, FALSE); otmp->quan = 1; curse(otmp); otmp->owt = weight(otmp); @@ -1715,22 +1714,20 @@ mktrap_victim(struct trap *ttmp) } break; default: - /* the most common race */ - victim_mnum = PM_HUMAN; - /* - * FIXME: - * If resurrected, this corpse will produce a plain human. - * PM_HUMAN is used as a placeholder for zombie/mummy/vampire - * corpses and doesn't ordinarily occur as a living monster. - * Maybe we should generate and attach montraits for a very low - * level fake player? - */ + human: + /* human, can be any role; all fake player monsters are human; + we probably ought to generate and attach montraits for fake + players that force them to be low level in case they get + resurrected; PM_HUMAN is a placeholder monster primarily + used for zombie, mummy, and vampire corpses */ + victim_mnum = !rn2(25) ? PM_HUMAN : rn1(PM_WIZARD - PM_ARCHEOLOGIST, + PM_ARCHEOLOGIST); + /* no role-specific equipment provided */ break; } - otmp = mkcorpstat(CORPSE, NULL, &mons[victim_mnum], x, y, - CORPSTAT_INIT); + otmp = mkcorpstat(CORPSE, NULL, &mons[victim_mnum], x, y, CORPSTAT_INIT); if (otmp) - otmp->age -= (TAINT_AGE + 1); /* died too long ago to eat */ + otmp->age -= (TAINT_AGE + 1); /* died too long ago to safely eat */ } /* mktrap(): select trap type and location, then use maketrap() to create it;