void nh_describe_pos(int x, int y, struct nh_desc_buf *bufs) { int monid = dbuf_get_mon(x, y); bufs->bgdesc[0] = '\0'; bufs->trapdesc[0] = '\0'; bufs->objdesc[0] = '\0'; bufs->mondesc[0] = '\0'; bufs->invisdesc[0] = '\0'; bufs->effectdesc[0] = '\0'; bufs->objcount = -1; if (!program_state.game_running || !api_entry_checkpoint()) return; describe_bg(x, y, level->locations[x][y].mem_bg, bufs->bgdesc); if (level->locations[x][y].mem_trap) strcpy(bufs->trapdesc, trapexplain[level->locations[x][y].mem_trap - 1]); bufs->objcount = describe_object(x, y, level->locations[x][y].mem_obj - 1, bufs->objdesc); describe_mon(x, y, monid - 1, bufs->mondesc); if (level->locations[x][y].mem_invis) strcpy(bufs->invisdesc, invisexplain); if (u.uswallow && (x != u.ux || y != u.uy)) { /* all locations when swallowed other than the hero are the monster */ sprintf(bufs->effectdesc, "interior of %s", Blind ? "a monster" : a_monnam(u.ustuck)); } api_exit(); }
void nh_describe_pos(int x, int y, struct nh_desc_buf *bufs, int *is_in) { bufs->bgdesc[0] = '\0'; bufs->trapdesc[0] = '\0'; bufs->objdesc[0] = '\0'; bufs->mondesc[0] = '\0'; bufs->invisdesc[0] = '\0'; bufs->effectdesc[0] = '\0'; bufs->feature_described = FALSE; bufs->objcount = -1; if (is_in) *is_in = 0; if (!program_state.game_running || !isok(x, y)) return; API_ENTRY_CHECKPOINT_RETURN_VOID_ON_ERROR(); if (is_in) { if (IS_ROCK(level->locations[x][y].typ) || closed_door(level, x, y)) *is_in = 1; else *is_in = 0; } int monid = dbuf_get_mon(x, y); int mem_bg = level->locations[x][y].mem_bg; describe_bg(x, y, mem_bg, bufs->bgdesc); int tt = level->locations[x][y].mem_trap; if (tt) { strcpy(bufs->trapdesc, trapexplain[level->locations[x][y].mem_trap - 1]); if (tt != BEAR_TRAP && tt != WEB && tt != STATUE_TRAP && mem_bg && is_in) *is_in = 1; } bufs->objcount = describe_object(x, y, level->locations[x][y].mem_obj - 1, bufs->objdesc, mem_bg && is_in, &bufs->feature_described); describe_mon(x, y, monid - 1, bufs->mondesc); if (level->locations[x][y].mem_invis) strcpy(bufs->invisdesc, invisexplain); if (Engulfed && (x != u.ux || y != u.uy)) { /* all locations when swallowed other than the hero are the monster */ snprintf(bufs->effectdesc, SIZE(bufs->effectdesc), "interior of %s", Blind ? "a monster" : a_monnam(u.ustuck)); } API_EXIT(); }