… | |
… | |
302 | new_draw_info (NDI_UNIQUE, 0, op, "Something blocks your magic."); |
302 | new_draw_info (NDI_UNIQUE, 0, op, "Something blocks your magic."); |
303 | return 0; |
303 | return 0; |
304 | } |
304 | } |
305 | if (mflags & P_IS_ALIVE) |
305 | if (mflags & P_IS_ALIVE) |
306 | { |
306 | { |
307 | for (tmp = get_map_ob (m, x, y); tmp != NULL; tmp = tmp->above) |
307 | for (tmp = GET_MAP_OB (m, x, y); tmp != NULL; tmp = tmp->above) |
308 | if (QUERY_FLAG (tmp, FLAG_ALIVE) && (tmp->type == PLAYER || QUERY_FLAG (tmp, FLAG_MONSTER))) |
308 | if (QUERY_FLAG (tmp, FLAG_ALIVE) && (tmp->type == PLAYER || QUERY_FLAG (tmp, FLAG_MONSTER))) |
309 | { |
309 | { |
310 | new_draw_info (NDI_UNIQUE, 0, op, "You detect something."); |
310 | new_draw_info (NDI_UNIQUE, 0, op, "You detect something."); |
311 | if (tmp->head != NULL) |
311 | if (tmp->head != NULL) |
312 | tmp = tmp->head; |
312 | tmp = tmp->head; |
… | |
… | |
440 | |
440 | |
441 | if (mflags & P_OUT_OF_MAP) |
441 | if (mflags & P_OUT_OF_MAP) |
442 | continue; |
442 | continue; |
443 | |
443 | |
444 | // earth to dust tears down everything that can be teared down |
444 | // earth to dust tears down everything that can be teared down |
445 | for (tmp = get_map_ob (m, sx, sy); tmp != NULL; tmp = next) |
445 | for (tmp = GET_MAP_OB (m, sx, sy); tmp != NULL; tmp = next) |
446 | { |
446 | { |
447 | next = tmp->above; |
447 | next = tmp->above; |
448 | if (QUERY_FLAG (tmp, FLAG_TEAR_DOWN)) |
448 | if (QUERY_FLAG (tmp, FLAG_TEAR_DOWN)) |
449 | hit_player (tmp, 9998, op, AT_PHYSICAL, 0); |
449 | hit_player (tmp, 9998, op, AT_PHYSICAL, 0); |
450 | } |
450 | } |
… | |
… | |
1698 | continue; |
1698 | continue; |
1699 | |
1699 | |
1700 | small_nuggets = 0; |
1700 | small_nuggets = 0; |
1701 | large_nuggets = 0; |
1701 | large_nuggets = 0; |
1702 | |
1702 | |
1703 | for (tmp = get_map_ob (mp, nx, ny); tmp != NULL; tmp = next) |
1703 | for (tmp = GET_MAP_OB (mp, nx, ny); tmp != NULL; tmp = next) |
1704 | { |
1704 | { |
1705 | next = tmp->above; |
1705 | next = tmp->above; |
1706 | if (tmp->weight > 0 && !QUERY_FLAG (tmp, FLAG_NO_PICK) && |
1706 | if (tmp->weight > 0 && !QUERY_FLAG (tmp, FLAG_NO_PICK) && |
1707 | !QUERY_FLAG (tmp, FLAG_ALIVE) && !QUERY_FLAG (tmp, FLAG_IS_CAULDRON)) |
1707 | !QUERY_FLAG (tmp, FLAG_ALIVE) && !QUERY_FLAG (tmp, FLAG_IS_CAULDRON)) |
1708 | { |
1708 | { |
… | |
… | |
1742 | large->destroy (); |
1742 | large->destroy (); |
1743 | small->destroy (); |
1743 | small->destroy (); |
1744 | /* reset this so that if player standing on a big pile of stuff, |
1744 | /* reset this so that if player standing on a big pile of stuff, |
1745 | * it is redrawn properly. |
1745 | * it is redrawn properly. |
1746 | */ |
1746 | */ |
1747 | op->contr->socket->look_position = 0; |
1747 | op->contr->ns->look_position = 0; |
1748 | return 1; |
1748 | return 1; |
1749 | } |
1749 | } |
1750 | |
1750 | |
1751 | |
1751 | |
1752 | /* This function removes the cursed/damned status on equipped |
1752 | /* This function removes the cursed/damned status on equipped |
… | |
… | |
1837 | * stuff on the floor. Only identify stuff on the floor if the spell |
1837 | * stuff on the floor. Only identify stuff on the floor if the spell |
1838 | * was not fully used. |
1838 | * was not fully used. |
1839 | */ |
1839 | */ |
1840 | if (num_ident) |
1840 | if (num_ident) |
1841 | { |
1841 | { |
1842 | for (tmp = get_map_ob (op->map, op->x, op->y); tmp != NULL; tmp = tmp->above) |
1842 | for (tmp = GET_MAP_OB (op->map, op->x, op->y); tmp != NULL; tmp = tmp->above) |
1843 | if (!QUERY_FLAG (tmp, FLAG_IDENTIFIED) && !tmp->invisible && need_identify (tmp)) |
1843 | if (!QUERY_FLAG (tmp, FLAG_IDENTIFIED) && !tmp->invisible && need_identify (tmp)) |
1844 | { |
1844 | { |
1845 | identify (tmp); |
1845 | identify (tmp); |
1846 | |
1846 | |
1847 | if (op->type == PLAYER) |
1847 | if (op->type == PLAYER) |
… | |
… | |
1902 | * floor. But this is not true for show invisible. |
1902 | * floor. But this is not true for show invisible. |
1903 | * Basically, we just go and find the top object and work |
1903 | * Basically, we just go and find the top object and work |
1904 | * down - that is easier than working up. |
1904 | * down - that is easier than working up. |
1905 | */ |
1905 | */ |
1906 | |
1906 | |
1907 | for (last = NULL, tmp = get_map_ob (m, nx, ny); tmp; tmp = tmp->above) |
1907 | for (last = NULL, tmp = GET_MAP_OB (m, nx, ny); tmp; tmp = tmp->above) |
1908 | last = tmp; |
1908 | last = tmp; |
1909 | |
1909 | |
1910 | /* Shouldn't happen, but if there are no objects on a space, this |
1910 | /* Shouldn't happen, but if there are no objects on a space, this |
1911 | * would happen. |
1911 | * would happen. |
1912 | */ |
1912 | */ |
… | |
… | |
2115 | |
2115 | |
2116 | mflags = get_map_flags (m, &m, x, y, &x, &y); |
2116 | mflags = get_map_flags (m, &m, x, y, &x, &y); |
2117 | |
2117 | |
2118 | if (!(mflags & P_OUT_OF_MAP) && mflags & P_IS_ALIVE) |
2118 | if (!(mflags & P_OUT_OF_MAP) && mflags & P_IS_ALIVE) |
2119 | { |
2119 | { |
2120 | for (plyr = get_map_ob (m, x, y); plyr != NULL; plyr = plyr->above) |
2120 | for (plyr = GET_MAP_OB (m, x, y); plyr != NULL; plyr = plyr->above) |
2121 | if (plyr != op && QUERY_FLAG (plyr, FLAG_ALIVE)) |
2121 | if (plyr != op && QUERY_FLAG (plyr, FLAG_ALIVE)) |
2122 | break; |
2122 | break; |
2123 | } |
2123 | } |
2124 | |
2124 | |
2125 | |
2125 | |
2126 | /* If we did not find a player in the specified direction, transfer |
2126 | /* If we did not find a player in the specified direction, transfer |
2127 | * to anyone on top of us. This is used for the rune of transference mostly. |
2127 | * to anyone on top of us. This is used for the rune of transference mostly. |
2128 | */ |
2128 | */ |
2129 | if (plyr == NULL) |
2129 | if (plyr == NULL) |
2130 | for (plyr = get_map_ob (op->map, op->x, op->y); plyr != NULL; plyr = plyr->above) |
2130 | for (plyr = GET_MAP_OB (op->map, op->x, op->y); plyr != NULL; plyr = plyr->above) |
2131 | if (plyr != op && QUERY_FLAG (plyr, FLAG_ALIVE)) |
2131 | if (plyr != op && QUERY_FLAG (plyr, FLAG_ALIVE)) |
2132 | break; |
2132 | break; |
2133 | |
2133 | |
2134 | if (!plyr) |
2134 | if (!plyr) |
2135 | { |
2135 | { |
… | |
… | |
2190 | m = op->map; |
2190 | m = op->map; |
2191 | mflags = get_map_flags (m, &m, sx, sy, &sx, &sy); |
2191 | mflags = get_map_flags (m, &m, sx, sy, &sx, &sy); |
2192 | if (mflags & P_OUT_OF_MAP) |
2192 | if (mflags & P_OUT_OF_MAP) |
2193 | return; |
2193 | return; |
2194 | |
2194 | |
2195 | for (tmp = get_map_ob (m, sx, sy); tmp != NULL; tmp = next) |
2195 | for (tmp = GET_MAP_OB (m, sx, sy); tmp != NULL; tmp = next) |
2196 | { |
2196 | { |
2197 | next = tmp->above; |
2197 | next = tmp->above; |
2198 | |
2198 | |
2199 | /* Need to look at the head object - otherwise, if tmp |
2199 | /* Need to look at the head object - otherwise, if tmp |
2200 | * points to a monster, we don't have all the necessary |
2200 | * points to a monster, we don't have all the necessary |
… | |
… | |
2647 | void |
2647 | void |
2648 | move_peacemaker (object *op) |
2648 | move_peacemaker (object *op) |
2649 | { |
2649 | { |
2650 | object *tmp; |
2650 | object *tmp; |
2651 | |
2651 | |
2652 | for (tmp = get_map_ob (op->map, op->x, op->y); tmp != NULL; tmp = tmp->above) |
2652 | for (tmp = GET_MAP_OB (op->map, op->x, op->y); tmp != NULL; tmp = tmp->above) |
2653 | { |
2653 | { |
2654 | int atk_lev, def_lev; |
2654 | int atk_lev, def_lev; |
2655 | object *victim = tmp; |
2655 | object *victim = tmp; |
2656 | |
2656 | |
2657 | if (tmp->head) |
2657 | if (tmp->head) |