… | |
… | |
441 | { |
441 | { |
442 | object *op; |
442 | object *op; |
443 | |
443 | |
444 | if (OUT_OF_REAL_MAP (m, x, y)) |
444 | if (OUT_OF_REAL_MAP (m, x, y)) |
445 | return 0; |
445 | return 0; |
446 | for (op = get_map_ob (m, x, y); op != NULL; op = op->above) |
446 | for (op = GET_MAP_OB (m, x, y); op != NULL; op = op->above) |
447 | if (QUERY_FLAG (op, FLAG_REFL_SPELL) |
447 | if (QUERY_FLAG (op, FLAG_REFL_SPELL) |
448 | && (!QUERY_FLAG (op, FLAG_ALIVE) |
448 | && (!QUERY_FLAG (op, FLAG_ALIVE) |
449 | || sp_op->type == LIGHTNING // XXX: elmex: why is LIGHTNING special cased here? |
449 | || sp_op->type == LIGHTNING // XXX: elmex: why is LIGHTNING special cased here? |
450 | // most spells use subtypes for bolts today... |
450 | // most spells use subtypes for bolts today... |
451 | || (rndm (0, 99)) < 90 - (sp_op->level / 10))) |
451 | || (rndm (0, 99)) < 90 - (sp_op->level / 10))) |
… | |
… | |
507 | return 0; |
507 | return 0; |
508 | |
508 | |
509 | if (OB_TYPE_MOVE_BLOCK (op, GET_MAP_MOVE_BLOCK (mp, x, y))) |
509 | if (OB_TYPE_MOVE_BLOCK (op, GET_MAP_MOVE_BLOCK (mp, x, y))) |
510 | return 0; |
510 | return 0; |
511 | |
511 | |
512 | for (tmp = get_map_ob (mp, x, y); tmp != NULL; tmp = tmp->above) |
512 | for (tmp = GET_MAP_OB (mp, x, y); tmp != NULL; tmp = tmp->above) |
513 | { |
513 | { |
514 | /* If there is a counterspell on the space, and this |
514 | /* If there is a counterspell on the space, and this |
515 | * object is using magic, don't progress. I believe we could |
515 | * object is using magic, don't progress. I believe we could |
516 | * leave this out and let in progress, and other areas of the code |
516 | * leave this out and let in progress, and other areas of the code |
517 | * will then remove it, but that would seem to to use more |
517 | * will then remove it, but that would seem to to use more |
… | |
… | |
699 | |
699 | |
700 | if (mflags & P_OUT_OF_MAP) |
700 | if (mflags & P_OUT_OF_MAP) |
701 | tmp = NULL; |
701 | tmp = NULL; |
702 | else |
702 | else |
703 | { |
703 | { |
704 | for (tmp = get_map_ob (m, x, y); tmp != NULL; tmp = tmp->above) |
704 | for (tmp = GET_MAP_OB (m, x, y); tmp != NULL; tmp = tmp->above) |
705 | if (tmp->type == PLAYER) |
705 | if (tmp->type == PLAYER) |
706 | break; |
706 | break; |
707 | } |
707 | } |
708 | } |
708 | } |
709 | /* didn't find a player there, look in current square for a player */ |
709 | /* didn't find a player there, look in current square for a player */ |
710 | if (tmp == NULL) |
710 | if (tmp == NULL) |
711 | for (tmp = get_map_ob (op->map, op->x, op->y); tmp != NULL; tmp = tmp->above) |
711 | for (tmp = GET_MAP_OB (op->map, op->x, op->y); tmp != NULL; tmp = tmp->above) |
712 | { |
712 | { |
713 | if (tmp->type == PLAYER) |
713 | if (tmp->type == PLAYER) |
714 | break; |
714 | break; |
715 | } |
715 | } |
716 | |
716 | |
… | |
… | |
752 | mp = m; |
752 | mp = m; |
753 | mflags = get_map_flags (m, &mp, nx, ny, &nx, &ny); |
753 | mflags = get_map_flags (m, &mp, nx, ny, &nx, &ny); |
754 | if (mflags & (P_OUT_OF_MAP | P_BLOCKSVIEW)) |
754 | if (mflags & (P_OUT_OF_MAP | P_BLOCKSVIEW)) |
755 | continue; |
755 | continue; |
756 | |
756 | |
757 | tmp = get_map_ob (mp, nx, ny); |
757 | tmp = GET_MAP_OB (mp, nx, ny); |
758 | |
758 | |
759 | while (tmp != NULL && (((owner_type == PLAYER && |
759 | while (tmp != NULL && (((owner_type == PLAYER && |
760 | !QUERY_FLAG (tmp, FLAG_MONSTER) && !QUERY_FLAG (tmp, FLAG_GENERATOR)) || |
760 | !QUERY_FLAG (tmp, FLAG_MONSTER) && !QUERY_FLAG (tmp, FLAG_GENERATOR)) || |
761 | (owner_type != PLAYER && tmp->type != PLAYER)) || (tmp == exclude || (tmp->head && tmp->head == exclude)))) |
761 | (owner_type != PLAYER && tmp->type != PLAYER)) || (tmp == exclude || (tmp->head && tmp->head == exclude)))) |
762 | tmp = tmp->above; |
762 | tmp = tmp->above; |