diff --git a/js/editor/editordefs.js b/js/editor/editordefs.js index 36622fd..1d6e7fa 100644 --- a/js/editor/editordefs.js +++ b/js/editor/editordefs.js @@ -924,7 +924,7 @@ export const TILE_DESCRIPTIONS = { }, sand: { name: "Sand", - desc: "Anything walking on it moves at half speed. Stops all blocks.", + desc: "Anything walking on it moves 50% slower. Stops all blocks.", }, grass: { name: "Grass", diff --git a/js/game.js b/js/game.js index 4332c46..2b734f1 100644 --- a/js/game.js +++ b/js/game.js @@ -1158,7 +1158,9 @@ export class Level extends LevelInterface { else if (terrain.type.name === 'popdown_floor') { this.sfx.play_once('step-popdown'); } - else if (terrain.type.name === 'gravel' || terrain.type.name === 'railroad') { + else if (terrain.type.name === 'gravel' || terrain.type.name === 'railroad' || + terrain.type.name === 'sand' || terrain.type.name === 'grass') + { this.sfx.play_once('step-gravel'); } else if (terrain.type.name === 'water') { @@ -1907,7 +1909,7 @@ export class Level extends LevelInterface { let terrain = goal_cell.get_terrain(); let ignore = actor.ignores(terrain.type.name) || actor.slide_ignores(terrain.type.name); if (terrain.type.speed_factor && ! ignore) { - speed /= terrain.type.speed_factor; + speed *= terrain.type.speed_factor; } // Speed boots speed us up, UNLESS we're entering a terrain with a speed factor and an // unignored slide mode -- so e.g. we gain 2x on teleports, ice + ice skates, force floors + diff --git a/js/tiletypes.js b/js/tiletypes.js index 367525e..70d4ef7 100644 --- a/js/tiletypes.js +++ b/js/tiletypes.js @@ -56,7 +56,7 @@ function _define_force_floor(direction, opposite_type) { return { layer: LAYERS.terrain, slide_mode: 'force', - speed_factor: 2, + speed_factor: 0.5, allow_player_override: true, // Used by Lynx to prevent backwards overriding force_floor_direction: direction, @@ -729,7 +729,7 @@ const TILE_TYPES = { sand: { layer: LAYERS.terrain, blocks_collision: COLLISION.block_cc1 | COLLISION.block_cc2, - speed_factor: 0.5, + speed_factor: 1.5, }, grass: { // TODO should bugs leave if they have no other option...? that seems real hard. @@ -759,7 +759,7 @@ const TILE_TYPES = { }, dash_floor: { layer: LAYERS.terrain, - speed_factor: 2, + speed_factor: 0.5, }, spikes: { layer: LAYERS.terrain, @@ -919,7 +919,7 @@ const TILE_TYPES = { cracked_ice: { layer: LAYERS.terrain, slide_mode: 'ice', - speed_factor: 2, + speed_factor: 0.5, on_arrive(me, level, other) { level.schedule_actor_slide(other); }, @@ -932,7 +932,7 @@ const TILE_TYPES = { ice: { layer: LAYERS.terrain, slide_mode: 'ice', - speed_factor: 2, + speed_factor: 0.5, on_arrive(me, level, other) { level.schedule_actor_slide(other); }, @@ -941,7 +941,7 @@ const TILE_TYPES = { layer: LAYERS.terrain, thin_walls: new Set(['south', 'west']), slide_mode: 'ice', - speed_factor: 2, + speed_factor: 0.5, blocks_leaving: blocks_leaving_thin_walls, on_arrive(me, level, other) { let direction = { @@ -957,7 +957,7 @@ const TILE_TYPES = { layer: LAYERS.terrain, thin_walls: new Set(['north', 'west']), slide_mode: 'ice', - speed_factor: 2, + speed_factor: 0.5, blocks_leaving: blocks_leaving_thin_walls, on_arrive(me, level, other) { let direction = { @@ -973,7 +973,7 @@ const TILE_TYPES = { layer: LAYERS.terrain, thin_walls: new Set(['north', 'east']), slide_mode: 'ice', - speed_factor: 2, + speed_factor: 0.5, blocks_leaving: blocks_leaving_thin_walls, on_arrive(me, level, other) { let direction = { @@ -989,7 +989,7 @@ const TILE_TYPES = { layer: LAYERS.terrain, thin_walls: new Set(['south', 'east']), slide_mode: 'ice', - speed_factor: 2, + speed_factor: 0.5, blocks_leaving: blocks_leaving_thin_walls, on_arrive(me, level, other) { let direction = { @@ -1008,7 +1008,7 @@ const TILE_TYPES = { force_floor_all: { layer: LAYERS.terrain, slide_mode: 'force', - speed_factor: 2, + speed_factor: 0.5, allow_player_override: true, blocks(me, level, other) { return (level.compat.rff_blocks_monsters &&