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