Implement the goofy CC2 "open trap" tile
This commit is contained in:
parent
019f6a78bc
commit
a0b34217b4
@ -358,8 +358,18 @@ const TILE_ENCODING = {
|
|||||||
has_next: true,
|
has_next: true,
|
||||||
},
|
},
|
||||||
0x41: {
|
0x41: {
|
||||||
// FIXME cc2lp1 uses this, i don't know what it actually does
|
name: 'trap',
|
||||||
error: "Open trap is not yet implemented!",
|
// Not actually a modifier, just using this for hax
|
||||||
|
// FIXME round-trip this, maybe expose it in the editor (sigh)
|
||||||
|
modifier: {
|
||||||
|
dummy: true,
|
||||||
|
decode(tile, mod) {
|
||||||
|
tile._initially_open = true;
|
||||||
|
},
|
||||||
|
encode(tile) {
|
||||||
|
return 0;
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
0x42: {
|
0x42: {
|
||||||
name: 'trap',
|
name: 'trap',
|
||||||
|
|||||||
@ -782,8 +782,6 @@ const TILE_TYPES = {
|
|||||||
},
|
},
|
||||||
slime: {
|
slime: {
|
||||||
draw_layer: DRAW_LAYERS.terrain,
|
draw_layer: DRAW_LAYERS.terrain,
|
||||||
// FIXME kills everything except ghosts, blobs, blocks
|
|
||||||
// FIXME blobs spread slime onto floor tiles, even destroying wiring
|
|
||||||
on_arrive(me, level, other) {
|
on_arrive(me, level, other) {
|
||||||
if (other.type.name === 'dirt_block' || other.type.name === 'ice_block') {
|
if (other.type.name === 'dirt_block' || other.type.name === 'ice_block') {
|
||||||
level.transmute_tile(me, 'floor');
|
level.transmute_tile(me, 'floor');
|
||||||
@ -1085,10 +1083,13 @@ const TILE_TYPES = {
|
|||||||
},
|
},
|
||||||
remove_press(me, level) {
|
remove_press(me, level) {
|
||||||
level._set_tile_prop(me, 'presses', me.presses - 1);
|
level._set_tile_prop(me, 'presses', me.presses - 1);
|
||||||
|
if (me._initially_open) {
|
||||||
|
level._set_tile_prop(me, '_initially_open', false);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// FIXME also doesn't trap ghosts, is that a special case???
|
// FIXME also doesn't trap ghosts, is that a special case???
|
||||||
traps(me, actor) {
|
traps(me, actor) {
|
||||||
return ! me.presses;
|
return ! me.presses && ! me._initially_open && actor.type.name !== 'ghost';
|
||||||
},
|
},
|
||||||
on_power(me, level) {
|
on_power(me, level) {
|
||||||
// Treat being powered or not as an extra kind of brown button press
|
// Treat being powered or not as an extra kind of brown button press
|
||||||
@ -1098,7 +1099,7 @@ const TILE_TYPES = {
|
|||||||
me.type.remove_press(me, level);
|
me.type.remove_press(me, level);
|
||||||
},
|
},
|
||||||
visual_state(me) {
|
visual_state(me) {
|
||||||
if (me && me.presses) {
|
if (me && (me.presses || me._initially_open)) {
|
||||||
return 'open';
|
return 'open';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user