Fix chip sockets
This commit is contained in:
parent
1453f68de5
commit
6fd5759de3
14
js/game.js
14
js/game.js
@ -41,7 +41,7 @@ export class Tile {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
blocks(other, direction) {
|
blocks(other, direction, level) {
|
||||||
if (this.type.blocks_all)
|
if (this.type.blocks_all)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ export class Tile {
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (this.type.blocks)
|
if (this.type.blocks)
|
||||||
return this.type.blocks(this, other);
|
return this.type.blocks(this, level, other);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -145,9 +145,9 @@ export class Cell extends Array {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
blocks_entering(actor, direction) {
|
blocks_entering(actor, direction, level) {
|
||||||
for (let tile of this) {
|
for (let tile of this) {
|
||||||
if (tile.blocks(actor, direction) && ! actor.ignores(tile.type.name))
|
if (tile.blocks(actor, direction, level) && ! actor.ignores(tile.type.name))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -510,7 +510,7 @@ export class Level {
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (! actor.cell.blocks_leaving(actor, direction) &&
|
if (! actor.cell.blocks_leaving(actor, direction) &&
|
||||||
! dest_cell.blocks_entering(actor, direction))
|
! dest_cell.blocks_entering(actor, direction, this))
|
||||||
{
|
{
|
||||||
// We found a good direction! Stop here
|
// We found a good direction! Stop here
|
||||||
actor.decision = direction;
|
actor.decision = direction;
|
||||||
@ -622,7 +622,7 @@ export class Level {
|
|||||||
|
|
||||||
if (actor.ignores(tile.type.name))
|
if (actor.ignores(tile.type.name))
|
||||||
continue;
|
continue;
|
||||||
if (! tile.blocks(actor, direction))
|
if (! tile.blocks(actor, direction, this))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (actor.type.pushes && actor.type.pushes[tile.type.name] && ! tile.stuck) {
|
if (actor.type.pushes && actor.type.pushes[tile.type.name] && ! tile.stuck) {
|
||||||
@ -633,7 +633,7 @@ export class Level {
|
|||||||
}
|
}
|
||||||
if (tile.type.on_bump) {
|
if (tile.type.on_bump) {
|
||||||
tile.type.on_bump(tile, this, actor);
|
tile.type.on_bump(tile, this, actor);
|
||||||
if (! tile.blocks(actor, direction))
|
if (! tile.blocks(actor, direction, this))
|
||||||
// It became something non-blocking!
|
// It became something non-blocking!
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -169,7 +169,7 @@ const TILE_TYPES = {
|
|||||||
// Locked doors
|
// Locked doors
|
||||||
door_red: {
|
door_red: {
|
||||||
draw_layer: LAYER_TERRAIN,
|
draw_layer: LAYER_TERRAIN,
|
||||||
blocks(me, other) {
|
blocks(me, level, other) {
|
||||||
// TODO not quite sure if this one is right; there are complex interactions with monsters, e.g. most monsters can eat blue keys but can't actually use them
|
// TODO not quite sure if this one is right; there are complex interactions with monsters, e.g. most monsters can eat blue keys but can't actually use them
|
||||||
return ! (other.type.has_inventory && other.has_item('key_red'));
|
return ! (other.type.has_inventory && other.has_item('key_red'));
|
||||||
},
|
},
|
||||||
@ -181,7 +181,7 @@ const TILE_TYPES = {
|
|||||||
},
|
},
|
||||||
door_blue: {
|
door_blue: {
|
||||||
draw_layer: LAYER_TERRAIN,
|
draw_layer: LAYER_TERRAIN,
|
||||||
blocks(me, other) {
|
blocks(me, level, other) {
|
||||||
return ! (other.type.has_inventory && other.has_item('key_blue'));
|
return ! (other.type.has_inventory && other.has_item('key_blue'));
|
||||||
},
|
},
|
||||||
on_arrive(me, level, other) {
|
on_arrive(me, level, other) {
|
||||||
@ -192,7 +192,7 @@ const TILE_TYPES = {
|
|||||||
},
|
},
|
||||||
door_yellow: {
|
door_yellow: {
|
||||||
draw_layer: LAYER_TERRAIN,
|
draw_layer: LAYER_TERRAIN,
|
||||||
blocks(me, other) {
|
blocks(me, level, other) {
|
||||||
return ! (other.type.has_inventory && other.has_item('key_yellow'));
|
return ! (other.type.has_inventory && other.has_item('key_yellow'));
|
||||||
},
|
},
|
||||||
on_arrive(me, level, other) {
|
on_arrive(me, level, other) {
|
||||||
@ -203,7 +203,7 @@ const TILE_TYPES = {
|
|||||||
},
|
},
|
||||||
door_green: {
|
door_green: {
|
||||||
draw_layer: LAYER_TERRAIN,
|
draw_layer: LAYER_TERRAIN,
|
||||||
blocks(me, other) {
|
blocks(me, level, other) {
|
||||||
return ! (other.type.has_inventory && other.has_item('key_green'));
|
return ! (other.type.has_inventory && other.has_item('key_green'));
|
||||||
},
|
},
|
||||||
on_arrive(me, level, other) {
|
on_arrive(me, level, other) {
|
||||||
@ -806,7 +806,7 @@ const TILE_TYPES = {
|
|||||||
draw_layer: LAYER_TERRAIN,
|
draw_layer: LAYER_TERRAIN,
|
||||||
blocks_monsters: true,
|
blocks_monsters: true,
|
||||||
blocks_blocks: true,
|
blocks_blocks: true,
|
||||||
blocks(me, other) {
|
blocks(me, level, other) {
|
||||||
return (level.chips_remaining > 0);
|
return (level.chips_remaining > 0);
|
||||||
},
|
},
|
||||||
on_arrive(me, level, other) {
|
on_arrive(me, level, other) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user