Set slide mode twice, to handle the obscure case of grabbing cleats on ice
This commit is contained in:
parent
408e4cd9f6
commit
7cf92f7841
16
js/game.js
16
js/game.js
@ -1181,7 +1181,6 @@ export class Level {
|
|||||||
|
|
||||||
let original_cell = actor.cell;
|
let original_cell = actor.cell;
|
||||||
this.remove_tile(actor);
|
this.remove_tile(actor);
|
||||||
this.make_slide(actor, null);
|
|
||||||
this.add_tile(actor, goal_cell);
|
this.add_tile(actor, goal_cell);
|
||||||
|
|
||||||
// Announce we're leaving, for the handful of tiles that care about it
|
// Announce we're leaving, for the handful of tiles that care about it
|
||||||
@ -1211,10 +1210,6 @@ export class Level {
|
|||||||
this.fail('squished');
|
this.fail('squished');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tile.type.slide_mode && ! actor.ignores(tile.type.name)) {
|
|
||||||
this.make_slide(actor, tile.type.slide_mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (actor === this.player && tile.type.is_hint) {
|
if (actor === this.player && tile.type.is_hint) {
|
||||||
this.hint_shown = tile.hint_text ?? this.stored_level.hint;
|
this.hint_shown = tile.hint_text ?? this.stored_level.hint;
|
||||||
}
|
}
|
||||||
@ -1237,6 +1232,8 @@ export class Level {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Announce we're approaching
|
// Announce we're approaching
|
||||||
|
// Clear the slide here since slide mode is important for knowing our speed
|
||||||
|
this.make_slide(actor, null);
|
||||||
for (let tile of Array.from(actor.cell)) {
|
for (let tile of Array.from(actor.cell)) {
|
||||||
if (tile === actor)
|
if (tile === actor)
|
||||||
continue;
|
continue;
|
||||||
@ -1246,6 +1243,9 @@ export class Level {
|
|||||||
if (tile.type.on_approach) {
|
if (tile.type.on_approach) {
|
||||||
tile.type.on_approach(tile, this, actor);
|
tile.type.on_approach(tile, this, actor);
|
||||||
}
|
}
|
||||||
|
if (tile.type.slide_mode) {
|
||||||
|
this.make_slide(actor, tile.type.slide_mode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.compat.tiles_react_instantly) {
|
if (this.compat.tiles_react_instantly) {
|
||||||
@ -1255,6 +1255,9 @@ export class Level {
|
|||||||
|
|
||||||
// Step on every tile in a cell we just arrived in
|
// Step on every tile in a cell we just arrived in
|
||||||
step_on_cell(actor, cell) {
|
step_on_cell(actor, cell) {
|
||||||
|
// Also reset slide here, since slide mode is differently important for forced moves
|
||||||
|
this.make_slide(actor, null);
|
||||||
|
|
||||||
// Step on topmost things first -- notably, it's safe to step on water with flippers on top
|
// Step on topmost things first -- notably, it's safe to step on water with flippers on top
|
||||||
for (let tile of Array.from(cell).reverse()) {
|
for (let tile of Array.from(cell).reverse()) {
|
||||||
if (tile === actor)
|
if (tile === actor)
|
||||||
@ -1281,6 +1284,9 @@ export class Level {
|
|||||||
else if (tile.type.on_arrive) {
|
else if (tile.type.on_arrive) {
|
||||||
tile.type.on_arrive(tile, this, actor);
|
tile.type.on_arrive(tile, this, actor);
|
||||||
}
|
}
|
||||||
|
if (tile.type.slide_mode) {
|
||||||
|
this.make_slide(actor, tile.type.slide_mode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user