X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=variants%2FChakart%2Fclass.js;h=aefbcd0467d4d0f6079482264bc898174d2684a5;hb=0cef7bb4f72046ce60db408bfb76103428e2c15a;hp=916156ed7f35c2535dabb1856841b96f847011db;hpb=9ac672172c605f9f5ea4355b8f743bcf189601fe;p=xogo.git diff --git a/variants/Chakart/class.js b/variants/Chakart/class.js index 916156e..aefbcd0 100644 --- a/variants/Chakart/class.js +++ b/variants/Chakart/class.js @@ -1,7 +1,7 @@ import ChessRules from "/base_rules.js"; -import GiveawayRules from "/variants/Giveaway/class.js"; import {ArrayFun} from "/utils/array.js"; import {Random} from "/utils/alea.js"; +import {FenUtil} from "/utils/setupPieces.js"; import PiPo from "/utils/PiPo.js"; import Move from "/utils/Move.js"; @@ -116,7 +116,6 @@ export default class ChakartRules extends ChessRules { { 'y': { // Virtual piece for "king remote shell captures" - moves: [], attack: [ { steps: [ @@ -132,11 +131,13 @@ export default class ChakartRules extends ChessRules { } genRandInitBaseFen() { - const options = Object.assign({mode: "suicide"}, this.options); - const gr = new GiveawayRules({options: options, genFenOnly: true}); - let res = gr.genRandInitBaseFen(); - res.o["flags"] = "1111"; //Peach + Mario flags - return res; + const s = FenUtil.setupPieces( + ['r', 'n', 'b', 'q', 'k', 'b', 'n', 'r'], {diffCol: ['b']}); + return { + fen: s.b.join("") + "/pppppppp/8/8/8/8/PPPPPPPP/" + + s.w.join("").toUpperCase(), + o: {flags: "1111"} //Peach + Mario + }; } fen2board(f) { @@ -312,7 +313,7 @@ export default class ChakartRules extends ChessRules { moves.push(this.getBasicMove([x, y], [x + shiftX, nextY])); } } - this.pawnPostProcess(moves, color, oppCol); + moves = super.pawnPostProcess(moves, color, oppCol); // Add mushroom on before-last square (+ potential segments) moves.forEach(m => { let [mx, my] = [x, y]; @@ -472,8 +473,7 @@ export default class ChakartRules extends ChessRules { ) ) { // "Forgotten" promotion, which occurred after some effect - let moves = [move]; - super.pawnPostProcess(moves, color, C.GetOppCol(color)); + let moves = super.pawnPostProcess([move], color, C.GetOppCol(color)); super.showChoices(moves, r); } else @@ -481,6 +481,8 @@ export default class ChakartRules extends ChessRules { } computeNextMove(move) { + if (move.koopa) + return null; // Set potential random effects, so that play() is deterministic // from opponent viewpoint: const endPiece = this.getPiece(move.end.x, move.end.y); @@ -641,6 +643,7 @@ export default class ChakartRules extends ChessRules { p: this.getPiece(move.start.x, move.start.y) })); } + em.koopa = true; //avoid applying effect break; case "chomp": // Eat piece @@ -699,12 +702,7 @@ export default class ChakartRules extends ChessRules { } displayBonus(move) { - let divBonus = document.createElement("div"); - divBonus.classList.add("bonus-text"); - divBonus.innerHTML = move.egg; - let container = document.getElementById(this.containerId); - container.appendChild(divBonus); - setTimeout(() => container.removeChild(divBonus), 2000); + super.displayMessage(null, move.egg, "bonus-text", 2000); } atLeastOneMove() {