-$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.39 $ $NHDT-Date: 1577662238 2019/12/29 23:30:38 $
+$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.40 $ $NHDT-Date: 1577674533 2019/12/30 02:55:33 $
General Fixes and Modified Features
-----------------------------------
warnings about "rn2(0) attempted" or "rn2(-n) attempted"
after 'w' on split stack patch, wielding '-' would cause an object_lost panic
same patch allowed partial stack from getobj to replace cursed wielded weapon
+if the orc-town version of mine town has been loaded, creation of orc zombies
+ or orc mummies would name them as part of the town raiding orc clan
Platform- and/or Interface-Specific Fixes
-/* NetHack 3.6 dokick.c $NHDT-Date: 1575245057 2019/12/02 00:04:17 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.136 $ */
+/* NetHack 3.6 dokick.c $NHDT-Date: 1577674533 2019/12/30 02:55:33 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.152 $ */
/* Copyright (c) Izchak Miller, Mike Stephenson, Steve Linhart, 1989. */
/* NetHack may be freely redistributed. See license for details. */
else
maxobj = 1;
+#define DELIVER_PM (M2_UNDEAD | M2_WERE | M2_HUMAN | M2_ELF | M2_DWARF \
+ | M2_GNOME | M2_ORC | M2_DEMON | M2_GIANT)
+
cnt = 0;
for (otmp = g.migrating_objs; otmp; otmp = otmp2) {
otmp2 = otmp->nobj;
if ((where & MIGR_TO_SPECIES) == 0)
continue;
- if ((mtmp->data->mflags2 & otmp->corpsenm) != 0) {
+ if ((mtmp->data->mflags2 & DELIVER_PM) == otmp->corpsenm) {
obj_extract_self(otmp);
otmp->owornmask = 0L;
otmp->ox = otmp->oy = 0;
}
free_oname(otmp);
}
- otmp->corpsenm = 0;
+ otmp->corpsenm = NON_PM;
(void) add_to_minv(mtmp, otmp);
cnt++;
if (maxobj && cnt >= maxobj)
-/* NetHack 3.6 mkmaze.c $NHDT-Date: 1577568891 2019/12/28 21:34:51 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.103 $ */
+/* NetHack 3.6 mkmaze.c $NHDT-Date: 1577674536 2019/12/30 02:55:36 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.104 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Pasi Kallinen, 2018. */
/* NetHack may be freely redistributed. See license for details. */
if (otmp && gang) {
new_oname(otmp, strlen(gang) + 1); /* removes old name if present */
Strcpy(ONAME(otmp), gang);
- if (otyp >= TRIPE_RATION && otyp <= TIN) {
+ if (objects[otyp].oc_class == FOOD_CLASS) {
if (otyp == SLIME_MOLD)
otmp->spe = fruitadd((char *) orcfruit[rn2(SIZE(orcfruit))],
(struct fruit *) 0);
cnt = rnd(10);
for (i = 0; i < cnt; ++i) {
/* Food items - but no lembas! (or some other weird things) */
- otyp = rn2((TIN - TRIPE_RATION) + 1) + TRIPE_RATION;
- if (otyp != LEMBAS_WAFER && otyp != GLOB_OF_GRAY_OOZE
- && otyp != GLOB_OF_BROWN_PUDDING && otyp != GLOB_OF_GREEN_SLIME
- && otyp != GLOB_OF_BLACK_PUDDING && otyp != MEAT_STICK
- && otyp != MEATBALL && otyp != MEAT_STICK && otyp != MEAT_RING
- && otyp != HUGE_CHUNK_OF_MEAT && otyp != CORPSE)
+ otyp = rn1(TIN - TRIPE_RATION + 1, TRIPE_RATION);
+ if (otyp != LEMBAS_WAFER
+ /* exclude meat <anything>, globs of <anything>, kelp
+ which all have random generation probability of 0
+ (K-/C-rations do too, but we want to include those) */
+ && (objects[otyp].oc_prob != 0
+ || otyp == C_RATION || otyp == K_RATION)
+ /* exclude food items which utilize obj->corpsenm because
+ that field is going to be overloaded for delivery purposes */
+ && otyp != CORPSE && otyp != EGG && otyp != TIN)
migr_booty_item(otyp, gang);
}
migr_booty_item(rn2(2) ? LONG_SWORD : SILVER_SABER, gang);