diff options
-rw-r--r-- | events.txt | 4 | ||||
-rw-r--r-- | rules.js | 53 | ||||
-rw-r--r-- | tools/gencode.js | 4 |
3 files changed, 59 insertions, 2 deletions
@@ -336,7 +336,9 @@ SHADED 20 endspace EVENT 21 - log "NOT IMPLEMENTED" + current REBEL_FACTIONS + prompt "Move any Troops from Gondwana and Madhyadesh to Delhi." + move_to S_DELHI (is_troop(p) && (piece_space(p) === S_GONDWANA || piece_space(p) === S_MADHYADESH)) SHADED 21 log "NOT IMPLEMENTED" @@ -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 ], ] diff --git a/tools/gencode.js b/tools/gencode.js index e70794e..fb111bc 100644 --- a/tools/gencode.js +++ b/tools/gencode.js @@ -105,6 +105,10 @@ for (let line of fs.readFileSync("events.txt", "utf-8").split("\n")) { emit([ "shipment", false, 0, line[1], "(p,s)=>" + line.slice(2).join(" ") ]) break + case "move_to": + emit([ "move_to", line[1], "(p,s)=>" + line.slice(2).join(" ") ]) + break + case "place": emit([ "place", false, 0, line[1], line[2], line[3] ]) break |