diff --git a/js/game.js b/js/game.js index e0d700c..f5680d1 100644 --- a/js/game.js +++ b/js/game.js @@ -296,7 +296,14 @@ export class Cell extends Array { if (push_mode === null) return false; - if (! actor.can_push(tile, direction)) { + if (actor.can_push(tile, direction) || ( + level.compat.tanks_teeth_push_ice_blocks && tile.type.name === 'ice_block' && + (actor.type.name === 'teeth' || actor.type.name === 'teeth_timid' || actor.type.name === 'tank_blue') + )) { + // Collect pushables for later, so we don't inadvertently push through a wall + pushable_tiles.push(tile); + } + else { // It's in our way and we can't push it, so we're done here if (push_mode === 'push') { if (actor.type.on_blocked) { @@ -305,9 +312,6 @@ export class Cell extends Array { } return false; } - - // Collect pushables for later, so we don't inadvertently push through a wall - pushable_tiles.push(tile); } // If we got this far, all that's left is to deal with pushables diff --git a/js/main.js b/js/main.js index 5fd883c..41ebc2a 100644 --- a/js/main.js +++ b/js/main.js @@ -2808,6 +2808,10 @@ const COMPAT_FLAGS = [{ key: 'no_immediate_detonate_bombs', label: "Don't immediately detonate populated mines", rulesets: new Set(['lynx', 'ms']), +}, { + key: 'tanks_teeth_push_ice_blocks', + label: "Blue tanks and teeth can push ice blocks", + rulesets: new Set(['ms']), }, { key: 'sliding_tanks_ignore_button', label: "Blue tanks ignore blue buttons while sliding",