revived unicorn horns (trunk only)

Back in Nov'04, <Someone> pointed out that even with only 5%
chance for dropping a horn upon the death of a unicorn which has been
revived from corpse, it's still possible to produce a nearly unlimited
number of them for polypile fodder.  This bumps the chance for a horn up
to 50%, but flags the horn as coming from a revived corpse and makes such
horns be treated by polymoprh as if they're non-magic (which practically
guarantees that they'll poly into mundane tools instead of magic ones).
This commit is contained in:
nethack.rankin
2007-04-01 01:20:57 +00:00
parent b4f39da9dd
commit e91ff47ff0
4 changed files with 17 additions and 10 deletions

View File

@@ -1,4 +1,4 @@
/* SCCS Id: @(#)zap.c 3.5 2007/02/17 */
/* SCCS Id: @(#)zap.c 3.5 2007/03/30 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1283,6 +1283,9 @@ poly_obj(obj, id)
change_luck(-1); /* Sokoban guilt */
if (id == STRANGE_OBJECT) { /* preserve symbol */
int try_limit = 3;
unsigned magic_obj = objects[obj->otyp].oc_magic;
if (obj->otyp == UNICORN_HORN && obj->degraded_horn) magic_obj = 0;
/* Try up to 3 times to make the magic-or-not status of
the new item be the same as it was for the old one. */
otmp = (struct obj *)0;
@@ -1290,7 +1293,7 @@ poly_obj(obj, id)
if (otmp) delobj(otmp);
otmp = mkobj(obj->oclass, FALSE);
} while (--try_limit > 0 &&
objects[obj->otyp].oc_magic != objects[otmp->otyp].oc_magic);
objects[otmp->otyp].oc_magic != magic_obj);
} else {
/* literally replace obj with this new thing */
otmp = mksobj(id, FALSE, FALSE);