summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rules.js38
1 files changed, 26 insertions, 12 deletions
diff --git a/rules.js b/rules.js
index feed732..dc03703 100644
--- a/rules.js
+++ b/rules.js
@@ -1479,8 +1479,8 @@ const advanced_sequence_of_play = [
{ power: P_PRAGMATIC, action: goto_movement },
{ power: P_PRAGMATIC, action: validate_end_movement },
+ // austria + pragmatic shared combat phase
{ power: P_AUSTRIA, action: goto_combat },
- { power: P_PRAGMATIC, action: goto_combat },
{ power: P_AUSTRIA, action: end_action_stage },
{ power: P_FRANCE, action: goto_end_turn },
@@ -3806,7 +3806,7 @@ function goto_combat() {
let from = []
let to = []
- for (let p of all_controlled_generals(game.power)) {
+ for (let p of all_coop_generals(game.power)) {
if (piece_power[p] === P_PRUSSIA && is_prussia_neutral())
continue
if (piece_power[p] === P_SAXONY && is_saxony_neutral())
@@ -3834,14 +3834,26 @@ function goto_combat() {
}
}
- if (game.combat.length > 0)
- game.state = "combat"
- else
- goto_retroactive_conquest()
+ next_combat()
}
-function next_combat() {
+function set_active_to_next_combat_power() {
set_active_to_current_sequence_of_play()
+ if (is_intro() || is_two_player())
+ return
+ // resolve all austria combat first
+ if (game.power === P_AUSTRIA) {
+ for (let i = 0; i < game.combat.length; i += 2) {
+ let p = get_supreme_commander(game.combat[i])
+ if (p >= 0 && piece_power[p] === P_AUSTRIA)
+ return
+ }
+ set_active_to_power(P_PRAGMATIC)
+ }
+}
+
+function next_combat() {
+ set_active_to_next_combat_power()
game.count = 0
delete game.attacker
delete game.defender
@@ -3855,8 +3867,11 @@ states.combat = {
inactive: "attack",
prompt() {
prompt("Resolve your attacks.")
- for (let i = 0; i < game.combat.length; i += 2)
- gen_action_supreme_commander(game.combat[i])
+ for (let i = 0; i < game.combat.length; i += 2) {
+ let p = get_supreme_commander(game.combat[i])
+ if (p >= 0 && is_controlled_power(game.power, piece_power[p]))
+ gen_action_piece(p)
+ }
},
piece(p) {
push_undo()
@@ -4502,9 +4517,8 @@ function goto_retroactive_conquest() {
apply_retroactive_conquest(conq, game.power)
}
} else {
- if (game.power === P_AUSTRIA) {
- // wait until pragmatic has also finished combat
- } else if (game.power === P_PRAGMATIC) {
+ if (game.power === P_AUSTRIA || game.power === P_PRAGMATIC) {
+ // shared combat phase
apply_retroactive_conquest(conq, P_AUSTRIA)
apply_retroactive_conquest(conq, P_PRAGMATIC)
} else {