diff --git a/js/tileset.js b/js/tileset.js index cbfc342..2139384 100644 --- a/js/tileset.js +++ b/js/tileset.js @@ -115,6 +115,7 @@ export const CC2_TILESET_LAYOUT = { wall_custom_blue: [15, 4], explosion: [[0, 5], [1, 5], [2, 5], [3, 5]], + splash_slime: [[0, 5], [1, 5], [2, 5], [3, 5]], splash: [[4, 5], [5, 5], [6, 5], [7, 5]], flame_jet_off: [8, 5], flame_jet_on: [[9, 5], [10, 5], [11, 5]], @@ -263,13 +264,13 @@ export const CC2_TILESET_LAYOUT = { }, walker: [0, 13], - // TODO walker animations span multiple tiles, rgh + // FIXME walker animations span multiple tiles helmet: [0, 14], stopwatch_toggle: [14, 14], stopwatch_bonus: [15, 14], blob: [0, 15], - // TODO blob animations also span multiple tiles + // FIXME blob animations span multiple tiles // TODO [0, 16] some kinda red/blue outline floor_mimic: [0, 2], // TODO [14, 16] with xray // TODO [15, 16] some kinda yellow/black outline @@ -367,6 +368,7 @@ export const CC2_TILESET_LAYOUT = { }, // These are frames from the splash/explosion animations drowned: [5, 5], + slimed: [5, 5], burned: [1, 5], exploded: [1, 5], failed: [1, 5], @@ -489,6 +491,7 @@ export const CC2_TILESET_LAYOUT = { }, // These are frames from the splash/explosion animations drowned: [5, 5], + slimed: [5, 5], burned: [1, 5], exploded: [1, 5], failed: [1, 5], @@ -696,8 +699,12 @@ export const LL_TILESET_LAYOUT = Object.assign({}, CC2_TILESET_LAYOUT, { south: [6, 33], west: [7, 33], }, + slimed: [1, 38], }), // TODO player2 equivalents + player2: Object.assign({}, CC2_TILESET_LAYOUT.player2, { + slimed: [1, 38], + }), bogus_player_burned_fire: { overlay: [6, 33], base: 'fire', @@ -710,6 +717,24 @@ export const LL_TILESET_LAYOUT = Object.assign({}, CC2_TILESET_LAYOUT, { // Custom tiles popwall2: [9, 32], bestowal_bow: [10, 32], + + // Blob and walker in all four directions + blob: { + north: [[0, 35], [1, 35], [2, 35], [3, 35], [4, 35], [5, 35], [6, 35], [7, 35]], + east: [[8, 35], [9, 35], [10, 35], [11, 35], [12, 35], [13, 35], [14, 35], [15, 35]], + south: [[0, 36], [1, 36], [2, 36], [3, 36], [4, 36], [5, 36], [6, 36], [7, 36]], + west: [[8, 36], [9, 36], [10, 36], [11, 36], [12, 36], [13, 36], [14, 36], [15, 36]], + }, + walker: { + north: [[0, 37], [1, 37], [2, 37], [3, 37]], + east: [[4, 37], [5, 37], [6, 37], [7, 37]], + // Same animations but played backwards + south: [[2, 37], [1, 37], [0, 37], [3, 37]], + west: [[6, 37], [5, 37], [4, 37], [7, 37]], + }, + + // Custom VFX + splash_slime: [[0, 38], [1, 38], [2, 38], [3, 38]], }); export class Tileset { diff --git a/js/tiletypes.js b/js/tiletypes.js index c73396b..d85d6a5 100644 --- a/js/tiletypes.js +++ b/js/tiletypes.js @@ -53,6 +53,9 @@ function player_visual_state(me) { else if (me.fail_reason === 'exploded') { return 'exploded'; } + else if (me.fail_reason === 'slimed') { + return 'slimed'; + } else if (me.fail_reason) { return 'failed'; } @@ -548,6 +551,17 @@ const TILE_TYPES = { if (other.type.name === 'dirt_block' || other.type.name === 'ice_block') { level.transmute_tile(me, 'floor'); } + else if (other.type.name === 'ghost') { + // No effect + } + else if (other.type.is_player) { + level.fail('slimed'); + } + else { + // FIXME needs a sound effect + level.sfx.play_once('splash', me.cell); + level.transmute_tile(other, 'splash_slime'); + } }, }, bomb: { @@ -1712,6 +1726,14 @@ const TILE_TYPES = { blocks_collision: COLLISION.player, ttl: 6, }, + // Custom VFX (identical function, but different aesthetic) + splash_slime: { + draw_layer: DRAW_LAYERS.overlay, + is_actor: true, + collision_mask: 0, + blocks_collision: COLLISION.player, + ttl: 6, + }, // Invalid tiles that appear in some CCL levels because community level // designers love to make nonsense diff --git a/tileset-lexy.png b/tileset-lexy.png index 84c4e67..2ece974 100644 Binary files a/tileset-lexy.png and b/tileset-lexy.png differ diff --git a/tileset-src/tileset-lexy-blob.aseprite b/tileset-src/tileset-lexy-blob.aseprite index 3367076..a4efd84 100644 Binary files a/tileset-src/tileset-lexy-blob.aseprite and b/tileset-src/tileset-lexy-blob.aseprite differ diff --git a/tileset-src/tileset-lexy.aseprite b/tileset-src/tileset-lexy.aseprite index 49ca392..c973178 100644 Binary files a/tileset-src/tileset-lexy.aseprite and b/tileset-src/tileset-lexy.aseprite differ