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.
This commit is contained in:
PatR
2024-01-25 14:12:05 -08:00
parent fa672fa1ba
commit ec4691a859
+13 -16
View File
@@ -1693,7 +1693,7 @@ mktrap_victim(struct trap *ttmp)
we're on dlvl 2 (1 is impossible) and b) we pass a coin we're on dlvl 2 (1 is impossible) and b) we pass a coin
flip */ flip */
if (kind == SLP_GAS_TRAP && !(lvl <= 2 && rn2(2))) if (kind == SLP_GAS_TRAP && !(lvl <= 2 && rn2(2)))
victim_mnum = PM_HUMAN; goto human;
break; break;
case 1: case 2: case 1: case 2:
victim_mnum = PM_DWARF; victim_mnum = PM_DWARF;
@@ -1706,8 +1706,7 @@ mktrap_victim(struct trap *ttmp)
victim_mnum = PM_GNOME; victim_mnum = PM_GNOME;
/* 10% chance of a candle too */ /* 10% chance of a candle too */
if (!rn2(10)) { if (!rn2(10)) {
otmp = mksobj(rn2(4) ? TALLOW_CANDLE : WAX_CANDLE, otmp = mksobj(rn2(4) ? TALLOW_CANDLE : WAX_CANDLE, TRUE, FALSE);
TRUE, FALSE);
otmp->quan = 1; otmp->quan = 1;
curse(otmp); curse(otmp);
otmp->owt = weight(otmp); otmp->owt = weight(otmp);
@@ -1715,22 +1714,20 @@ mktrap_victim(struct trap *ttmp)
} }
break; break;
default: default:
/* the most common race */ human:
victim_mnum = PM_HUMAN; /* human, can be any role; all fake player monsters are human;
/* we probably ought to generate and attach montraits for fake
* FIXME: players that force them to be low level in case they get
* If resurrected, this corpse will produce a plain human. resurrected; PM_HUMAN is a placeholder monster primarily
* PM_HUMAN is used as a placeholder for zombie/mummy/vampire used for zombie, mummy, and vampire corpses */
* corpses and doesn't ordinarily occur as a living monster. victim_mnum = !rn2(25) ? PM_HUMAN : rn1(PM_WIZARD - PM_ARCHEOLOGIST,
* Maybe we should generate and attach montraits for a very low PM_ARCHEOLOGIST);
* level fake player? /* no role-specific equipment provided */
*/
break; break;
} }
otmp = mkcorpstat(CORPSE, NULL, &mons[victim_mnum], x, y, otmp = mkcorpstat(CORPSE, NULL, &mons[victim_mnum], x, y, CORPSTAT_INIT);
CORPSTAT_INIT);
if (otmp) 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; /* mktrap(): select trap type and location, then use maketrap() to create it;