… | |
… | |
248 | |
248 | |
249 | any_down = any_down || tmp->value; |
249 | any_down = any_down || tmp->value; |
250 | } |
250 | } |
251 | else if (tmp->type == PEDESTAL) |
251 | else if (tmp->type == PEDESTAL) |
252 | { |
252 | { |
|
|
253 | bool is_match = is_match_expr (tmp->slaying); |
253 | tmp->value = 0; |
254 | tmp->value = 0; |
254 | |
255 | |
255 | for (object *ab = tmp->above; ab; ab = ab->above) |
256 | for (object *ab = tmp->above; ab; ab = ab->above) |
256 | { |
257 | { |
257 | object *head = ab->head_ (); |
258 | object *head = ab->head_ (); |
258 | |
259 | |
259 | /* Same note regarding move_type for buttons above apply here. */ |
260 | /* Same note regarding move_type for buttons above apply here. */ |
260 | if (((ab->move_type & tmp->move_on) || ab->move_type == 0) |
261 | if (((ab->move_type & tmp->move_on) || ab->move_type == 0)) |
|
|
262 | if (is_match |
|
|
263 | ? match (tmp->slaying, head, tmp, originator) |
261 | && (head->race == tmp->slaying |
264 | : (head->race == tmp->slaying |
262 | || (head->type == SPECIAL_KEY && head->slaying == tmp->slaying) |
265 | || (head->type == SPECIAL_KEY && head->slaying == tmp->slaying) |
263 | || (tmp->slaying == shstr_player && head->type == PLAYER))) |
266 | || (tmp->slaying == shstr_player && head->type == PLAYER))) |
|
|
267 | { |
264 | tmp->value = 1; |
268 | tmp->value = 1; |
|
|
269 | break; |
|
|
270 | } |
265 | } |
271 | } |
266 | |
272 | |
267 | any_down = any_down || tmp->value; |
273 | any_down = any_down || tmp->value; |
268 | } |
274 | } |
269 | } |
275 | } |