--- deliantra/server/common/button.C 2009/10/15 21:40:42 1.58 +++ deliantra/server/common/button.C 2009/10/21 00:44:39 1.59 @@ -273,6 +273,25 @@ any_down = any_down || tmp->value; } + else if (tmp->type == T_MATCH) + { + tmp->value = 0; + + for (object *ab = tmp->above; ab; ab = ab->above) + { + object *head = ab->head_ (); + + /* Same note regarding move_type for buttons above apply here. */ + if (((ab->move_type & tmp->move_on) || ab->move_type == 0)) + if (match (tmp->slaying, head, tmp, originator)) + { + tmp->value = 1; + break; + } + } + + any_down = any_down || tmp->value; + } } if (any_down) /* If any other buttons were down, force this to remain down */