diff options
author | Joël Simoneau <simoneaujoel@gmail.com> | 2025-03-19 15:18:30 -0400 |
---|---|---|
committer | Joël Simoneau <simoneaujoel@gmail.com> | 2025-03-19 15:18:30 -0400 |
commit | 1e328ef28fe8c58f6787090d751dc5d8ca1d0811 (patch) | |
tree | 4ec5b8136f76e4a41dbc37e8dd2ec34004b338bd | |
parent | 3e4a6d5447ffb4b3b70b0447301aacbd6aced02f (diff) | |
download | vijayanagara-1e328ef28fe8c58f6787090d751dc5d8ca1d0811.tar.gz |
Ask for cavalry
-rw-r--r-- | rules.js | 78 |
1 files changed, 65 insertions, 13 deletions
@@ -3399,21 +3399,10 @@ states.give_resources = { disable_negotiation: true, prompt() { view.prompt = `Negotiate: ${faction_name[game.transfer.current]} asked for Resources.` - if (game.resources[game.current] >= 1 && game.resources[game.transfer.current] < 99) + if (game.resources[game.current] >= 1 && game.resources[game.transfer.current] < 24) gen_action_resources(game.current) if (game.transfer.count > 0) { - let min_cost = 1 - // if (game.transfer.current === DS) { - // min_cost = 3 - // if (game.transfer.state === "sweep" && has_capability(CAP_OSPINA)) - // min_cost = 1 - // if (game.transfer.state === "assault" && has_capability(CAP_TAPIAS)) - // min_cost = 1 - // } - if (game.resources[game.transfer.current] < min_cost) - view.actions.done = 0 - else - view.actions.done = 1 + view.actions.done = 1 view.actions.undo = 1 } else { view.actions.deny = 1 @@ -3483,6 +3472,65 @@ states.transfer_resources = { }, } +function action_ask_cavalry() { + push_undo() + game.transfer = { + current: game.current, + state: game.state, + count: 0, + } + game.state = "ask_cavalry" +} + +states.ask_cavalry = { + disable_negotiation: true, + prompt() { + view.prompt = "Negotiate: Ask another faction for Cavalry tokens?" + if (!is_player_ds() && n_cavalry(DS) > 0) + gen_action_faction_cavalry(DS) + if (!is_player_bk() && n_cavalry(BK) > 0) + gen_action_faction_cavalry(BK) + if (!is_player_ve() && n_cavalry(VE) > 0) + gen_action_faction_cavalry(VE) + }, + token(c) { + game.current = game.cavalry[c] + game.state = "give_cavalry" + }, +} + +states.give_cavalry = { + inactive: "Transfer Cavalry tokens", + disable_negotiation: true, + prompt() { + view.prompt = `Negotiate: ${faction_name[game.transfer.current]} asked for Cavalry tokens.` + if (n_cavalry(game.current) >= 1) + gen_action_faction_cavalry(game.current) + if (game.transfer.count > 0) { + view.actions.done = 1 + view.actions.undo = 1 + } else { + view.actions.deny = 1 + view.actions.undo = 0 + } + }, + token(c) { + push_undo() + game.transfer.count++ + set_cavalry_faction(c, game.transfer.current) + }, + deny() { + log_transfer(`${faction_name[game.current]} denied request from ${faction_name[game.transfer.current]}.`) + end_negotiation() + }, + done() { + clear_undo() + log_transfer_cavalry(game.current, game.transfer.current, game.transfer.count) + end_negotiation() + }, +} + + function end_negotiation() { game.current = game.transfer.current game.state = game.transfer.state @@ -3589,6 +3637,10 @@ function log_transfer_resources(from, to, n) { log_transfer(`${faction_name[from]} gave ${n} Resources to ${faction_name[to]}.`) } +function log_transfer_cavalry(from, to, n) { + log_transfer(`${faction_name[from]} gave ${n} Cavalry tokens to ${faction_name[to]}.`) +} + function log_space(s, action) { if (action) log_action("S" + s + " - " + action) |