This is only a minor issue, but nevertheless I wanna air it here on the list: There is a problem with altar triggers. Altar triggers work like normal altars but they reset after a while, thus can be used infinitly. The problem is: Altar triggers push their connected value TWO times per sacrifice. First when you drop the sacrifice, second when the altar is reset. In most cases that is unwanted, e.g. when I connect the altar trigger to a creator for selling tickets or something. I've written a patch so that one can set the attribute "last_sp 1" to altar triggers. If set, the altar-connector will be pushed only once: per sacrifice - not by reset. Altars with "last_sp 0" (default) remain unchanged. Attached the patch to the mail. If there are no objections I'll check it into cvs. Andreas V. -------------- next part -------------- *** button.c.orig Wed Mar 7 14:50:46 2001 --- button.c Wed Mar 7 16:45:36 2001 *************** *** 380,386 **** if (operate_altar (op, &cause)) { SET_ANIMATION (op, 1); update_object(op); ! trigger_move (op, 1); return cause == NULL; } else { return 0; --- 380,399 ---- if (operate_altar (op, &cause)) { SET_ANIMATION (op, 1); update_object(op); ! ! if (op->last_sp >= 0) { ! trigger_move (op, 1); ! if (op->last_sp > 0) ! op->last_sp = -op->last_sp; ! } ! else { ! /* for trigger altar with last_sp, the ON/OFF ! status (-> value) is "simulated": */ ! op->value = !op->value; ! trigger_move (op, 1); ! op->last_sp = -op->last_sp; ! op->value = !op->value; ! } return cause == NULL; } else { return 0; *************** *** 388,394 **** } else { SET_ANIMATION (op, 0); update_object(op); ! trigger_move (op, 0); } return 0; --- 401,419 ---- } else { SET_ANIMATION (op, 0); update_object(op); ! ! /* If trigger_altar has "last_sp > 0" set on the map, ! it will push the connected value only once per sacrifice. ! Otherwise (default), the connected value will be ! pushed twice: First by sacrifice, second by reset! -AV */ ! if (!op->last_sp) ! trigger_move (op, 0); ! else { ! op->stats.wc = 0; ! op->value = !op->value; ! op->speed = 0; ! update_ob_speed(op); ! } } return 0;