From cfe74b0842ddc33e281570e9c186868431529a36 Mon Sep 17 00:00:00 2001 From: Joël Simoneau Date: Wed, 19 Feb 2025 11:43:55 -0500 Subject: Move_to --- rules.js | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) (limited to 'rules.js') diff --git a/rules.js b/rules.js index 1e81e63..4e0f149 100644 --- a/rules.js +++ b/rules.js @@ -2602,6 +2602,10 @@ function is_ds_unit(p) { return (is_piece(p, DS, ELITE) || is_piece(p, DS, TROOPS)) } +function is_troop(p) { + return piece_faction(p) === DS && piece_type(p) === TROOPS +} + function is_governor(p) { return piece_faction(p) === DS && piece_type(p) === ELITE } @@ -3818,6 +3822,51 @@ function is_piece_in_event_space(p) { return piece_space(p) === game.vm.s } +// VM: MOVE PIECE + +function vm_move_to() { + push_summary() + game.state = "vm_move_to" +} + +function vm_can_move_to(f) { + for (let p = all_first_piece; p <= all_last_piece; ++p) + if (f(p)) + return true + return false +} + +states.vm_move_to = { + prompt() { + let f = vm_inst(2) + + event_prompt() + for (let p = all_first_piece; p <= all_last_piece; ++p) + if (f(p)) + gen_action_piece(p) + + view.actions.skip = 1 + }, + piece(p) { + log_summary_place(p) + place_piece(p, vm_inst(1)) + + if (!vm_can_move_to(vm_inst(2))) + end_vm_move_to(vm_inst(1)) + }, + skip() { + end_vm_move_to(vm_inst(1)) + } +} + +function end_vm_move_to(s) { + if (game.summary && game.summary.length > 0) { + log_space(vm_inst(1), "Move") + pop_summary() + } + vm_next() +} + // VM: PLACE PIECE function vm_auto_place() { @@ -4570,7 +4619,9 @@ CODE[20 * 2 + 1] = [ // EVENT 21 CODE[21 * 2 + 0] = [ - [ vm_log, "NOT IMPLEMENTED" ], + [ vm_current, REBEL_FACTIONS ], + [ vm_prompt, "Move any Troops from Gondwana and Madhyadesh to Delhi." ], + [ vm_move_to, S_DELHI, (p,s)=>(is_troop(p) && (piece_space(p) === S_GONDWANA || piece_space(p) === S_MADHYADESH)) ], [ vm_return ], ] -- cgit v1.2.3