summaryrefslogtreecommitdiff
path: root/rules.js
diff options
context:
space:
mode:
authorFrans Bongers <fransbongers@macbookpro.home>2025-03-11 21:48:13 +0100
committerFrans Bongers <fransbongers@macbookpro.home>2025-03-11 21:48:13 +0100
commit56871d01a90bfa23e6f959b69c1d751c6b2903ea (patch)
treee0ea7d89d65aecb72c52260653bced0f0a24a7ec /rules.js
parentb596edb8672efb58649b8ef6aedeb6c6a3cb5d24 (diff)
downloadland-and-freedom-56871d01a90bfa23e6f959b69c1d751c6b2903ea.tar.gz
fix: game stuck when moving track at max
Diffstat (limited to 'rules.js')
-rw-r--r--rules.js34
1 files changed, 27 insertions, 7 deletions
diff --git a/rules.js b/rules.js
index 3d2e446..bb5c6ac 100644
--- a/rules.js
+++ b/rules.js
@@ -861,18 +861,26 @@ states.choose_area_ap = {
gen_spend_hero_points();
view.prompt = 'Use Action Points.';
const strength = get_active_node_args().strength;
+ let can_use_ap = false;
for (const track of tracks) {
- gen_move_track_change(track.id, strength);
+ can_use_ap = gen_move_track_change(track.id, strength) || can_use_ap;
}
const fronts = get_fronts_to_add_to(data_1.ANY);
+ if (fronts.length > 0) {
+ can_use_ap = true;
+ }
for (const front of fronts) {
gen_action_front(front);
}
for (const bonus of bonuses) {
if (game.bonuses[bonus] === data_1.OFF) {
gen_action_bonus(bonus);
+ can_use_ap = true;
}
}
+ if (!can_use_ap) {
+ gen_action('skip');
+ }
},
spend_hp() {
resolve_spend_hp();
@@ -911,6 +919,9 @@ states.choose_area_ap = {
move_track_to(4, x);
resolve_active_and_proceed();
},
+ skip() {
+ resolve_active_and_proceed();
+ },
};
states.change_bonus = {
inactive: 'select Bonus',
@@ -1342,17 +1353,21 @@ states.move_track = {
else if (track === data_1.GOVERNMENT && value === data_1.AWAY_FROM_CENTER) {
view.prompt = `Move ${name} away from center.`;
}
+ let can_move_track = false;
if (track === data_1.LIBERTY_OR_COLLECTIVIZATION) {
- gen_move_track(data_1.LIBERTY, game.tracks[data_1.LIBERTY] + value);
- gen_move_track(data_1.COLLECTIVIZATION, game.tracks[data_1.COLLECTIVIZATION] + value);
+ can_move_track = gen_move_track(data_1.LIBERTY, game.tracks[data_1.LIBERTY] + value) || can_move_track;
+ can_move_track = gen_move_track(data_1.COLLECTIVIZATION, game.tracks[data_1.COLLECTIVIZATION] + value) || can_move_track;
}
else if (track === data_1.GOVERNMENT &&
(value === data_1.TOWARDS_CENTER || value === data_1.AWAY_FROM_CENTER)) {
const direction = get_government_track_direction(value);
- gen_move_track(track, game.tracks[track] + direction);
+ can_move_track = gen_move_track(track, game.tracks[track] + direction) || can_move_track;
}
else {
- gen_move_track(track, game.tracks[track] + value);
+ can_move_track = gen_move_track(track, game.tracks[track] + value) || can_move_track;
+ }
+ if (!can_move_track) {
+ gen_action('skip');
}
},
spend_hp() {
@@ -1378,6 +1393,9 @@ states.move_track = {
move_track_to(4, x);
resolve_active_and_proceed();
},
+ skip() {
+ resolve_active_and_proceed();
+ },
};
function can_move_track_up(track_id) {
const faction = get_active_faction();
@@ -2411,12 +2429,14 @@ function gen_move_track(track_id, new_value) {
}
function gen_move_track_change(track_id, change) {
const current_value = game.tracks[track_id];
+ let can_move_track = false;
if (can_move_track_up(track_id)) {
- gen_move_track(track_id, current_value + change);
+ can_move_track = gen_move_track(track_id, current_value + change) || can_move_track;
}
if (can_move_track_down(track_id)) {
- gen_move_track(track_id, current_value - change);
+ can_move_track = gen_move_track(track_id, current_value - change) || can_move_track;
}
+ return can_move_track;
}
function move_track(track_id, change) {
const current_value = game.tracks[track_id];