Initial farming-mitigation changes

Remove deathdrops completely for cloned monsters
Revert corpse frequency decrementing for cloned monsters
Add new object 'blob of pudding' and corresponding tile
Set 'P' monsters to create that object on corpsification

...add script to go through and auto-renumber objects.txt
because there's no way i'm doing that by hand
This commit is contained in:
Derek S. Ray
2015-03-15 18:29:43 -04:00
parent ea8eb14abe
commit b8dc3a6e43
4 changed files with 310 additions and 196 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 mon.c $NHDT-Date: 1425319883 2015/03/02 18:11:23 $ $NHDT-Branch: master $:$NHDT-Revision: 1.137 $ */
/* NetHack 3.5 mon.c $NHDT-Date: 1426458561 2015/03/15 22:29:21 $ $NHDT-Branch: derek-farming $:$NHDT-Revision: 1.139 $ */
/* NetHack 3.5 mon.c $Date: 2012/05/16 02:15:10 $ $Revision: 1.126 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -268,6 +268,14 @@ unsigned corpseflags;
obj = mksobj_at(SCR_BLANK_PAPER, x, y, TRUE, FALSE);
free_mname(mtmp);
break;
case PM_BLACK_PUDDING:
case PM_GREEN_SLIME:
case PM_BROWN_PUDDING:
case PM_GRAY_OOZE:
/* expired puddings will congeal into a large blob */
obj = mksobj_at(BLOB_OF_PUDDING, x, y, TRUE, FALSE);
free_mname(mtmp);
break;
default_1:
default:
if (mvitals[mndx].mvflags & G_NOCORPSE)
@@ -1673,7 +1681,6 @@ boolean was_swallowed; /* digestion */
is_golem(mdat) || is_mplayer(mdat) || is_rider(mdat))
return TRUE;
tmp = 2 + ((mdat->geno & G_FREQ) < 2) + verysmall(mdat);
if (mon->mcloned) tmp += mvitals[monsndx(mdat)].died / 25;
return (boolean) !rn2(tmp);
}
@@ -1937,13 +1944,13 @@ int dest;
int otyp;
/* illogical but traditional "treasure drop" */
if (!rn2(6) && !(mvitals[mndx].mvflags & G_NOCORPSE) &&
if (!rn2(6) && !(mvitals[mndx].mvflags & G_NOCORPSE)
/* no extra item from swallower or steed */
(x != u.ux || y != u.uy) &&
&& (x != u.ux || y != u.uy)
/* no extra item from kops--too easy to abuse */
mdat->mlet != S_KOP &&
/* reduced chance of item from cloned monster */
(!mtmp->mcloned || !rn2(mvitals[mndx].died / 5 + 1))) {
&& mdat->mlet != S_KOP
/* no items from cloned monsters */
&& !mtmp->mcloned) {
otmp = mkobj(RANDOM_CLASS, TRUE);
/* don't create large objects from small monsters */
otyp = otmp->otyp;

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 objects.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 objects.c $NHDT-Date: 1426458573 2015/03/15 22:29:33 $ $NHDT-Branch: derek-farming $:$NHDT-Revision: 1.26 $ */
/* NetHack 3.5 objects.c $Date: 2011/07/28 04:00:20 $ $Revision: 1.23 $ */
/* Copyright (c) Mike Threepoint, 1989. */
/* NetHack may be freely redistributed. See license for details. */
@@ -670,6 +670,10 @@ FOOD("egg", 85, 1, 1, 1, FLESH, 80, CLR_WHITE),
FOOD("meatball", 0, 1, 1, 0, FLESH, 5, CLR_BROWN),
FOOD("meat stick", 0, 1, 1, 0, FLESH, 5, CLR_BROWN),
FOOD("huge chunk of meat", 0,20,400, 0, FLESH,2000, CLR_BROWN),
/* pudding 'corpses' will turn into this */
FOOD("blob of pudding", 0, 1, 1, 0, FLESH, 0, CLR_BROWN),
/* special case because it's not mergable */
OBJECT(OBJ("meat ring", (char *)0),
BITS(1,0,0,0,0,0,0,0,0,0,0,0,FLESH),