summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMischa Untaga <99098079+MischaU8@users.noreply.github.com>2023-10-04 12:04:18 +0200
committerMischa Untaga <99098079+MischaU8@users.noreply.github.com>2023-10-04 12:04:18 +0200
commitf2fd5b3a8050f4c21f8f8185469f3e4cbdfbe975 (patch)
treeac513d172991c75e3cebca09c4a5ef4e403a7241
parent65ca540db89363f2a20c7b32005de400490cdaae (diff)
downloadalgeria-f2fd5b3a8050f4c21f8f8185469f3e4cbdfbe975.tar.gz
check victory conditions
-rw-r--r--rules.js27
1 files changed, 24 insertions, 3 deletions
diff --git a/rules.js b/rules.js
index 93fa258..bba0d72 100644
--- a/rules.js
+++ b/rules.js
@@ -131,6 +131,7 @@ const MAX_AP = 99
function raise_fln_psl(amount) {
game.fln_psl += amount
if (game.fln_psl > MAX_PSL) {
+ // TODO can trigger victory
let excess_psl = game.fln_psl - MAX_PSL
log(`FLN PSL exceeds ${MAX_PSL}; Goverment ${-excess_psl} PSL`)
game.fln_psl = MAX_PSL
@@ -141,6 +142,7 @@ function raise_fln_psl(amount) {
function raise_gov_psl(amount) {
game.gov_psl += amount
if (game.gov_psl > MAX_PSL) {
+ // TODO can trigger victory
let excess_psl = game.gov_psl - MAX_PSL
log(`Government PSL exceeds ${MAX_PSL}; FLN ${-excess_psl} PSL`)
game.gov_psl = MAX_PSL
@@ -675,6 +677,18 @@ exports.resign = function (state, player) {
return game
}
+function check_victory() {
+ // TODO victory scale
+ if (game.gov_psl <= 0) {
+ goto_game_over(FLN_NAME, "FLN wins: Government PSL reduced to 0.")
+ return true
+ } else if (game.fln_psl <= 0) {
+ goto_game_over(GOV_NAME, "Government wins: FLN PSL reduced to 0.")
+ return true
+ }
+ return false
+}
+
function goto_game_over(result, victory) {
game.state = "game_over"
game.active = "None"
@@ -1011,6 +1025,7 @@ function end_scenario_setup() {
function begin_game() {
game.turn = 1
+ log_h1("Turn: " + game.turn)
goto_random_event()
}
@@ -1112,6 +1127,7 @@ function goto_fln_factional_purge() {
function goto_morocco_tunisia_independence() {
log_h3("Morocco & Tunisia Gains Independence. TODO")
+ log_br()
if (game.is_morocco_tunisia_independent || game.scenario === "1958" || game.scenario === "1960") {
// If this event is rolled again, or if playing the 1958 or 1960 scenarios,
@@ -1126,11 +1142,11 @@ function goto_morocco_tunisia_independence() {
// Raise both FLN and Government PSL by 2d6;
let fln_roll = roll_2d6()
- log(`Raising FLN PSL by ${fln_roll}`)
+ log(`Raised FLN PSL by ${fln_roll}`)
raise_fln_psl(fln_roll)
let gov_roll = roll_2d6()
- log(`Raising Government PSL by ${gov_roll}`)
+ log(`Raised Government PSL by ${gov_roll}`)
raise_fln_psl(gov_roll)
// FLN player may now Build/Convert units in these two countries as if a Front were there
@@ -1151,7 +1167,7 @@ function goto_suez_crisis() {
log_h3("Suez Crisis. TODO")
if (game.events.suez_crisis || game.scenario === "1958" || game.scenario === "1960") {
// Treat as "No Event" if rolled again, or playing 1958 or 1960 scenarios.
- log("Re-roll. No Event.")
+ log("No Event.")
end_random_event()
return
}
@@ -1174,11 +1190,14 @@ function goto_amnesty() {
function goto_jean_paul_sartre() {
log_h3("Jean-Paul Sartre writes article condemning the war.")
// Reduce Government PSL by 1 PSP.
+ log(`Reduced Government PSL by 1`)
game.gov_psl -= 1
end_random_event()
}
function end_random_event() {
+ if (check_victory())
+ return
goto_gov_reinforcement_phase()
}
@@ -1814,6 +1833,8 @@ function goto_next_turn() {
delete game.events.jealousy_and_paranoia
delete game.events.border_zone_mobilized
+ log_h1("Turn: " + game.turn)
+
goto_random_event()
}