spontaneously appearing button/buttonable fixes
This commit is contained in:
parent
7d36d09715
commit
86404dbc5b
10
js/game.js
10
js/game.js
@ -2511,15 +2511,21 @@ export class Level extends LevelInterface {
|
||||
}
|
||||
|
||||
//if we made a button or something that's buttonable, update accordingly
|
||||
if (new_type.connects_to)
|
||||
if (new_type.connects_to && (new_type.connects_to !== old_type.connects_to))
|
||||
{
|
||||
this.connect_button(tile);
|
||||
}
|
||||
else if (new_type.connected_from)
|
||||
else if (new_type.connected_from && (new_type.connected_from !== old_type.connected_from))
|
||||
{
|
||||
this.connect_buttons_to(tile);
|
||||
}
|
||||
|
||||
//ready the tile
|
||||
if (new_type.on_begin)
|
||||
{
|
||||
new_type.on_begin(tile, this);
|
||||
}
|
||||
|
||||
//TODO: update circuit networks?
|
||||
}
|
||||
}
|
||||
|
||||
@ -1430,13 +1430,16 @@ const TILE_TYPES = {
|
||||
trap: {
|
||||
layer: LAYERS.terrain,
|
||||
connected_from: 'button_brown',
|
||||
on_begin(me, level) {
|
||||
me.presses = 0;
|
||||
},
|
||||
add_press_ready(me, level, other) {
|
||||
// Same as below, but without ejection
|
||||
me.presses = (me.presses ?? 0) + 1;
|
||||
me.presses = me.presses + 1;
|
||||
},
|
||||
// Lynx (not cc2): open traps immediately eject their contents on arrival, if possible
|
||||
add_press(me, level, is_wire = false) {
|
||||
level._set_tile_prop(me, 'presses', (me.presses ?? 0) + 1);
|
||||
level._set_tile_prop(me, 'presses', me.presses + 1);
|
||||
// TODO weird cc2 case that may or may not be a bug: actors aren't ejected if the trap
|
||||
// opened because of wiring
|
||||
if (me.presses === 1 && ! is_wire) {
|
||||
@ -1450,7 +1453,7 @@ const TILE_TYPES = {
|
||||
}
|
||||
},
|
||||
remove_press(me, level) {
|
||||
level._set_tile_prop(me, 'presses', me.presses - 1);
|
||||
level._set_tile_prop(me, 'presses', Math.max(0, me.presses - 1));
|
||||
if (me._initially_open) {
|
||||
level._set_tile_prop(me, '_initially_open', false);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user