diff options
author | Frans Bongers <fransbongers@macbookpro.home> | 2025-03-11 21:48:13 +0100 |
---|---|---|
committer | Frans Bongers <fransbongers@macbookpro.home> | 2025-03-11 21:48:13 +0100 |
commit | 56871d01a90bfa23e6f959b69c1d751c6b2903ea (patch) | |
tree | e0ea7d89d65aecb72c52260653bced0f0a24a7ec /rules.js | |
parent | b596edb8672efb58649b8ef6aedeb6c6a3cb5d24 (diff) | |
download | land-and-freedom-56871d01a90bfa23e6f959b69c1d751c6b2903ea.tar.gz |
fix: game stuck when moving track at max
Diffstat (limited to 'rules.js')
-rw-r--r-- | rules.js | 34 |
1 files changed, 27 insertions, 7 deletions
@@ -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]; |