hartl@lan.informatik.tu-muenchen.dbp.de (Anton Hartl) (08/12/88)
Nethack Bug Fixes for zap.c =========================== 1) Zapping a wand of cancellation at yourself causes obj->spe of *all* items to be set to -1; that's right for wands, but not for anything else. For example: wand of fire (5) -> wand of fire (-1) [i.e. unusable] cursed -4 ring mail -> cursed -1 ring mail [should be +0] +4 katana -> -1 katana [should be +0] 2) Zapping a wand of undead turning on a dead green/yellow/... dragon revive()s a random coloured dragon instead of a corresponding coloured one. (Line numbers are valid if you have already applied JC Collet's dragon patch). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Franz "Oin" Schmausser schmauss@lan.informatik.tu-muenchen.dbp.de schmauss%lan.informatik.tu-muenchen.dbp.de@{relay.cs.net,unido.uucp} Life is hard but cruel & sometimes it ends with the death. ------------------------------------------------------------------------------- Anton "Ulysses" Hartl hartl@tumult.informatik.tu-muenchen.de (ARPA) ...{!uunet,!unido}!tumult!hartl (UUCP) Don't tell me about life. - Marvin, the paranoid android ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dept. of Computer Science, Technical University of Munich, Bavaria ---- snip ----- snip ----- snip ----- snip ----- snip ----- snip ----- snip --- *** zap.c.orig Wed Jul 20 12:07:10 1988 --- zap.c Fri Aug 12 13:35:16 1988 *************** *** 371,377 #endif for(otmp = invent; otmp; otmp = otmp->nobj) if(otmp != uball && otmp->otyp != AMULET_OF_YENDOR) ! otmp->spe = (obj->olet == WAND_SYM) ? -1 : 0; if(u.mtimedone) rehumanize(); flags.botl = 1; /* because of potential AC change */ find_ac(); --- 371,377 ----- #endif for(otmp = invent; otmp; otmp = otmp->nobj) if(otmp != uball && otmp->otyp != AMULET_OF_YENDOR) ! otmp->spe = (otmp->olet == WAND_SYM) ? -1 : 0; if(u.mtimedone) rehumanize(); flags.botl = 1; /* because of potential AC change */ find_ac(); *************** *** 1040,1045 } #endif /* KAA */ #endif /* DRAGONS */ } return(!!mtmp); /* TRUE if some monster created */ } --- 1039,1092 ----- } #endif /* KAA */ #endif /* DRAGONS */ + if (mtmp) + { + extern struct permonst grey_dragon, + red_dragon, + orange_dragon, + white_dragon, + black_dragon, + blue_dragon, + green_dragon, + yellow_dragon; + switch (obj->otyp) + { + case DEAD_GREY_DRAGON : + mtmp->dragon = 0; + mtmp->data = &grey_dragon; + break; + case DEAD_RED_DRAGON : + mtmp->dragon = 1; + mtmp->data = &red_dragon; + break; + case DEAD_ORANGE_DRAGON : + mtmp->dragon = 2; + mtmp->data = &orange_dragon; + break; + case DEAD_WHITE_DRAGON : + mtmp->dragon = 3; + mtmp->data = &white_dragon; + break; + case DEAD_BLACK_DRAGON : + mtmp->dragon = 4; + mtmp->data = &black_dragon; + break; + case DEAD_BLUE_DRAGON : + mtmp->dragon = 5; + mtmp->data = &blue_dragon; + break; + case DEAD_GREEN_DRAGON : + mtmp->dragon = 6; + mtmp->data = &green_dragon; + break; + case DEAD_YELLOW_DRAGON : + mtmp->dragon = 7; + mtmp->data = &yellow_dragon; + break; + default: + break; + } + } } return(!!mtmp); /* TRUE if some monster created */ }