summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoël Simoneau <simoneaujoel@gmail.com>2025-03-19 15:18:30 -0400
committerJoël Simoneau <simoneaujoel@gmail.com>2025-03-19 15:18:30 -0400
commit1e328ef28fe8c58f6787090d751dc5d8ca1d0811 (patch)
tree4ec5b8136f76e4a41dbc37e8dd2ec34004b338bd
parent3e4a6d5447ffb4b3b70b0447301aacbd6aced02f (diff)
downloadvijayanagara-1e328ef28fe8c58f6787090d751dc5d8ca1d0811.tar.gz
Ask for cavalry
-rw-r--r--rules.js78
1 files changed, 65 insertions, 13 deletions
diff --git a/rules.js b/rules.js
index cd5e725..6706763 100644
--- a/rules.js
+++ b/rules.js
@@ -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)