version 1.27 | | version 1.28 |
---|
| | |
/* | | /* |
* static char *rcsid_sock_info_c = | | * static char *rcsid_sock_info_c = |
* "$Id: info.c,v 1.27 2006/05/05 09:41:15 ryo_saeba Exp $"; | | * "$Id: info.c,v 1.28 2006/05/18 05:27:44 mwedel Exp $"; |
*/ | | */ |
| | |
/* | | /* |
| | |
*/ | | */ |
static void magic_mapping_mark_recursive(object *pl, char *map_mark, int px, int py) | | static void magic_mapping_mark_recursive(object *pl, char *map_mark, int px, int py) |
{ | | { |
int x, y, dx, dy,mflags; | | int x, y, dx, dy,mflags, l; |
sint16 nx, ny; | | sint16 nx, ny; |
mapstruct *mp; | | mapstruct *mp; |
New_Face *f; | | New_Face *f; |
| | object *ob; |
| | |
for (dx = -1; dx <= 1; dx++) { | | for (dx = -1; dx <= 1; dx++) { |
for (dy = -1; dy <= 1; dy++) { | | for (dy = -1; dy <= 1; dy++) { |
| | |
if (mflags & P_OUT_OF_MAP) continue; | | if (mflags & P_OUT_OF_MAP) continue; |
| | |
if (map_mark[MAGIC_MAP_HALF + x + MAGIC_MAP_SIZE* (MAGIC_MAP_HALF + y)] == 0) { | | if (map_mark[MAGIC_MAP_HALF + x + MAGIC_MAP_SIZE* (MAGIC_MAP_HALF + y)] == 0) { |
f= GET_MAP_FACE(mp, nx, ny, 0); | | for (l=0; l < MAP_LAYERS; l++) { |
if (f == blank_face) | | ob = GET_MAP_FACE_OBJ(mp, nx, ny, l); |
f= GET_MAP_FACE(mp, nx, ny, 1); | | if (ob && !ob->invisible && ob->face != blank_face) break; |
if (f == blank_face) | | } |
f= GET_MAP_FACE(mp, nx, ny, 2); | | if (ob) f = ob->face; |
| | else f = blank_face; |
| | |
/* Should probably have P_NO_MAGIC here also, but then shops don't | | /* Should probably have P_NO_MAGIC here also, but then shops don't |
* work. | | * work. |
*/ | | */ |
if (mflags & P_BLOCKSVIEW) | | if (mflags & P_BLOCKSVIEW) |
map_mark[MAGIC_MAP_HALF + x + MAGIC_MAP_SIZE* (MAGIC_MAP_HALF + y)] = FACE_WALL | (f?f->magicmap:0); | | map_mark[MAGIC_MAP_HALF + x + MAGIC_MAP_SIZE* (MAGIC_MAP_HALF + y)] = |
| | FACE_WALL | (f?f->magicmap:0); |
else { | | else { |
map_mark[MAGIC_MAP_HALF + x + MAGIC_MAP_SIZE* (MAGIC_MAP_HALF + y)] = FACE_FLOOR | (f?f->magicmap:0); | | map_mark[MAGIC_MAP_HALF + x + MAGIC_MAP_SIZE* (MAGIC_MAP_HALF + y)] = FACE_FLOOR | (f?f->magicmap:0); |
magic_mapping_mark_recursive(pl, map_mark, x, y); | | magic_mapping_mark_recursive(pl, map_mark, x, y); |
| | |
| | |
void magic_mapping_mark(object *pl, char *map_mark, int strength) | | void magic_mapping_mark(object *pl, char *map_mark, int strength) |
{ | | { |
int x, y, mflags; | | int x, y, mflags, l; |
sint16 nx, ny; | | sint16 nx, ny; |
mapstruct *mp; | | mapstruct *mp; |
New_Face *f; | | New_Face *f; |
| | object *ob; |
| | |
for (x = -strength; x <strength; x++) { | | for (x = -strength; x <strength; x++) { |
for (y = -strength; y <strength; y++) { | | for (y = -strength; y <strength; y++) { |
| | |
if (mflags & P_OUT_OF_MAP) | | if (mflags & P_OUT_OF_MAP) |
continue; | | continue; |
else { | | else { |
f= GET_MAP_FACE(mp, nx, ny, 0); | | for (l=0; l < MAP_LAYERS; l++) { |
if (f == blank_face) | | ob = GET_MAP_FACE_OBJ(mp, nx, ny, l); |
f= GET_MAP_FACE(mp, nx, ny, 1); | | if (ob && !ob->invisible && ob->face != blank_face) break; |
if (f == blank_face) | | } |
f= GET_MAP_FACE(mp, nx, ny, 2); | | if (ob) f = ob->face; |
| | else f = blank_face; |
} | | } |
| | |
if (mflags & P_BLOCKSVIEW) | | if (mflags & P_BLOCKSVIEW) |