cham changes (trunk only)
This is a foundation patch for patches to follow. - use a full short index for mon->cham field. - The current system of providing CHAM_XXX values was limited to the 3 bits allocated in the bitfield and invalidated save/bones if the field was expanded. - The current system didn't provide an easy backwards change if multiple monster types wanted to use the bit, there was a one to one mapping: For instance, if you wanted a CHAM_VAMPIRE, and you wanted vampires, vampire lords, and Vlad to use it, you would have to have CHAM_VAMPIRE, CHAM_VAMPIRE_LORD, and CHAM_VLAD defined to achieve that with the one-to-one backward mapping. - This new way just uses the mon[] index in the mon->cham field and eliminates the need for CHAM_XXX (CHAM_ORDINARY is still used). - no longer requires the cham_to_pm mappings
This commit is contained in:
11
src/muse.c
11
src/muse.c
@@ -1,4 +1,4 @@
|
||||
/* SCCS Id: @(#)muse.c 3.4 2002/12/23 */
|
||||
/* SCCS Id: @(#)muse.c 3.4 2004/06/12 */
|
||||
/* Copyright (C) 1990 by Ken Arromdee */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -1588,7 +1588,8 @@ struct monst *mtmp;
|
||||
if(dist2(x, y, mtmp->mux, mtmp->muy) > 36)
|
||||
return FALSE;
|
||||
|
||||
if (!stuck && !immobile && !mtmp->cham && monstr[monsndx(mdat)] < 6) {
|
||||
if (!stuck && !immobile &&
|
||||
(mtmp->cham == CHAM_ORDINARY) && monstr[monsndx(mdat)] < 6) {
|
||||
boolean ignore_boulders = (verysmall(mdat) ||
|
||||
throws_rocks(mdat) ||
|
||||
passes_walls(mdat));
|
||||
@@ -1658,13 +1659,15 @@ struct monst *mtmp;
|
||||
m.has_misc = MUSE_POT_SPEED;
|
||||
}
|
||||
nomore(MUSE_WAN_POLYMORPH);
|
||||
if(obj->otyp == WAN_POLYMORPH && obj->spe > 0 && !mtmp->cham
|
||||
if(obj->otyp == WAN_POLYMORPH && obj->spe > 0
|
||||
&& (mtmp->cham == CHAM_ORDINARY)
|
||||
&& monstr[monsndx(mdat)] < 6) {
|
||||
m.misc = obj;
|
||||
m.has_misc = MUSE_WAN_POLYMORPH;
|
||||
}
|
||||
nomore(MUSE_POT_POLYMORPH);
|
||||
if(obj->otyp == POT_POLYMORPH && !mtmp->cham
|
||||
if(obj->otyp == POT_POLYMORPH
|
||||
&& (mtmp->cham == CHAM_ORDINARY)
|
||||
&& monstr[monsndx(mdat)] < 6) {
|
||||
m.misc = obj;
|
||||
m.has_misc = MUSE_POT_POLYMORPH;
|
||||
|
||||
Reference in New Issue
Block a user