Implement Spikes

Stops players (and doppelgangers) unless they have hiking boots. Everything else can pass.
This commit is contained in:
Timothy Stiles 2021-02-14 17:04:21 +11:00
parent dece34f365
commit 7bcb1ac018
4 changed files with 17 additions and 1 deletions

View File

@ -808,6 +808,10 @@ const TILE_ENCODING = {
has_next: true, has_next: true,
is_extension: true, is_extension: true,
}, },
0xd5: {
name: 'spikes',
is_extension: true,
},
0xe0: { 0xe0: {
name: 'gift_bow', name: 'gift_bow',
has_next: true, has_next: true,

View File

@ -1608,7 +1608,8 @@ const EDITOR_PALETTE = [{
'hole', 'hole',
'cracked_floor', 'cracked_floor',
'cracked_ice', 'cracked_ice',
'score_5x' 'score_5x',
'spikes'
], ],
}]; }];
@ -2227,6 +2228,10 @@ const EDITOR_TILE_DESCRIPTIONS = {
name: "×5 bonus", name: "×5 bonus",
desc: "Quintuples the player's current bonus points. Can be collected by doppelgangers, rovers, and bowling balls, but will not grant bonus points.", desc: "Quintuples the player's current bonus points. Can be collected by doppelgangers, rovers, and bowling balls, but will not grant bonus points.",
}, },
spikes: {
name: "Spikes",
desc: "Stops players (and doppelgangers) unless they have hiking boots. Everything else can pass.",
},
}; };
const SPECIAL_PALETTE_ENTRIES = { const SPECIAL_PALETTE_ENTRIES = {

View File

@ -1063,6 +1063,7 @@ export const LL_TILESET_LAYOUT = Object.assign({}, CC2_TILESET_LAYOUT, {
cracked_floor: [11, 43], cracked_floor: [11, 43],
cracked_ice: [7, 40], cracked_ice: [7, 40],
score_5x: [10, 40], score_5x: [10, 40],
spikes: [5, 40],
}); });
export const TILESET_LAYOUTS = { export const TILESET_LAYOUTS = {

View File

@ -687,6 +687,12 @@ const TILE_TYPES = {
blocks_collision: COLLISION.block_cc1 | COLLISION.block_cc2, blocks_collision: COLLISION.block_cc1 | COLLISION.block_cc2,
speed_factor: 0.5, speed_factor: 0.5,
}, },
spikes: {
layer: LAYERS.terrain,
blocks(me, level, other) {
return !(!other.type.is_player || other.has_item('hiking_boots'));
},
},
fire_sticks: { fire_sticks: {
layer: LAYERS.terrain, layer: LAYERS.terrain,
blocks_collision: COLLISION.block_cc1 | (COLLISION.monster_solid & ~COLLISION.rover & ~COLLISION.fireball), blocks_collision: COLLISION.block_cc1 | (COLLISION.monster_solid & ~COLLISION.rover & ~COLLISION.fireball),