Fix castle alt mechanics.

This commit is contained in:
yukirij 2024-10-03 13:31:41 -07:00
parent bdd353f8cf
commit fb2f8534a8

View File

@ -588,17 +588,13 @@ GAME.Game = class {
let moves = piece.moves();
let extent = true;
switch(moves.alt) {
/* Drop Cone */ case 2:
extent = false;
/* Drop Once */ case 1:
{
// Drop Once
case 1: {
// Check all tiles if not blocking.
if(block_directions == 0) {
for(let i = 0; i < GAME_DATA.board.tiles.length; ++i) {
if(this.placable_tile(piece, i, {check:false, extent:extent})) {
if(this.placable_tile(piece, i, {check:false})) {
tiles.push(new GAME.MovementTile(i, true, false, 0, 0));
}
}
@ -611,19 +607,15 @@ GAME.Game = class {
let direction_id = BITWISE.ffs(mask);
let direction = GAME.Const.get_direction(direction_id);
let move_hex = hex.copy();
let tile_hex = hex.copy();
for(let dist = 1; dist <= 9; ++dist) {
move_hex.add(direction);
tile_hex.add(direction);
if(HEX.is_valid_board(move_hex)) {
let tile_id = HEX.hex_to_tile(move_hex);
let tile_data = this.board.tiles[tile_id];
let target_id = tile_data.piece;
if(HEX.is_valid_board(tile_hex)) {
let tile_id = HEX.hex_to_tile(tile_hex);
if(target_id !== null) { break; }
if(this.placable_tile(piece, tile_id, {check:false, extent:extent})) {
if(this.placable_tile(piece, tile_id, {check:false})) {
tiles.push(new GAME.MovementTile(tile_id, true, false, 0, 0));
}
} else { break; }
@ -634,13 +626,14 @@ GAME.Game = class {
}
} break;
case 3: {
// Cone Drop
case 2: {
// Check all tiles if not blocking.
if(block_directions == 0) {
for(let i = 0; i < GAME_DATA.board.tiles.length; ++i) {
let tile_hex = HEX.tile_to_hex(i);
let valid = 0;
let tile_hex = this.board.tiles[i].hex;
let valid = true;
if(piece.player == 0) {
if(tile_hex.x >= hex.x) {
valid = tile_hex.y <= hex.y;
@ -655,7 +648,7 @@ GAME.Game = class {
}
}
if(valid && this.placable_tile(piece, i)) {
if(valid && this.placable_tile(piece, i, {check:false, extent:false})) {
tiles.push(new GAME.MovementTile(i, true, false, 0, 0));
}
}
@ -668,18 +661,14 @@ GAME.Game = class {
let direction_id = BITWISE.ffs(mask);
let direction = GAME.Const.get_direction(direction_id);
let move_hex = hex.copy();
let tile_hex = hex.copy();
for(let dist = 1; dist <= 9; ++dist) {
move_hex.add(direction);
tile_hex.add(direction);
if(HEX.is_valid_board(move_hex)) {
let tile_id = HEX.hex_to_tile(move_hex);
let tile_data = this.board.tiles[tile_id];
let target_id = tile_data.piece;
if(HEX.is_valid_board(tile_hex)) {
let tile_id = HEX.hex_to_tile(tile_hex);
let tile_hex = HEX.tile_to_hex(i);
let valid = 0;
let valid = true;
if(piece.player == 0) {
if(tile_hex.x >= hex.x) {
valid = tile_hex.y <= hex.y;
@ -694,9 +683,7 @@ GAME.Game = class {
}
}
if(target_id !== null) { break; }
if(valid && this.placable_tile(piece, tile_id)) {
if(this.placable_tile(piece, tile_id, {check:false, extent:false})) {
tiles.push(new GAME.MovementTile(tile_id, true, false, 0, 0));
}
} else { break; }