summaryrefslogtreecommitdiff
path: root/rules.js
diff options
context:
space:
mode:
Diffstat (limited to 'rules.js')
-rw-r--r--rules.js77
1 files changed, 48 insertions, 29 deletions
diff --git a/rules.js b/rules.js
index 6a082d5..f0c5b69 100644
--- a/rules.js
+++ b/rules.js
@@ -459,6 +459,8 @@ function setup(seed, _scenario, options) {
glory_current_year: null,
fascist: 0,
card_played: 0,
+ can_use_ap: 0,
+ can_use_mb: 0,
};
log_header('Land and Freedom', 't');
if (options.hidden_bag)
@@ -842,8 +844,17 @@ states.choose_area_ap = {
inactive: 'choose area to use Action Points',
prompt() {
gen_spend_hero_points();
- view.prompt = 'Use Action Points.';
+ const use_morale_bonus = game.can_use_mb === 1 && game.bonuses[data_1.MORALE_BONUS] === data_1.ON;
+ if (use_morale_bonus) {
+ view.prompt = "Use Action Points and Morale Bonus.";
+ }
+ else {
+ view.prompt = 'Use Action Points.';
+ }
const strength = get_active_node_args().strength;
+ if (use_morale_bonus) {
+ gen_action('use_morale_bonus');
+ }
let can_use_ap = false;
for (const track of tracks) {
can_use_ap = gen_move_track_change(track.id, strength) || can_use_ap;
@@ -869,6 +880,8 @@ states.choose_area_ap = {
resolve_spend_hp();
},
bonus(b) {
+ log("Action Points:");
+ game.can_use_ap = 0;
update_bonus(b, data_1.ON);
const s = get_active_node_args().strength;
const other_bonus = b === data_1.TEAMWORK_BONUS ? data_1.MORALE_BONUS : data_1.TEAMWORK_BONUS;
@@ -878,33 +891,52 @@ states.choose_area_ap = {
resolve_active_and_proceed();
},
front(f) {
+ log("Action Points:");
+ game.can_use_ap = 0;
const s = get_active_node_args().strength;
update_front(f, s, get_active_faction());
resolve_active_and_proceed();
},
tr0(x) {
+ log("Action Points:");
+ game.can_use_ap = 0;
move_track_to(0, x);
resolve_active_and_proceed();
},
tr1(x) {
+ log("Action Points:");
+ game.can_use_ap = 0;
move_track_to(1, x);
resolve_active_and_proceed();
},
tr2(x) {
+ log("Action Points:");
+ game.can_use_ap = 0;
move_track_to(2, x);
resolve_active_and_proceed();
},
tr3(x) {
+ log("Action Points:");
+ game.can_use_ap = 0;
move_track_to(3, x);
resolve_active_and_proceed();
},
tr4(x) {
+ log("Action Points:");
+ game.can_use_ap = 0;
move_track_to(4, x);
resolve_active_and_proceed();
},
skip() {
+ game.can_use_ap = 0;
resolve_active_and_proceed();
},
+ use_morale_bonus() {
+ log(`Morale Bonus:`);
+ game.can_use_mb = 0;
+ insert_before_active_node(create_state_node('activate_icon', get_active_faction()));
+ next();
+ },
};
states.change_bonus = {
inactive: 'select Bonus',
@@ -1496,21 +1528,21 @@ states.player_turn = {
prompt() {
gen_spend_hero_points();
const faction_id = get_active_faction();
- let { use_ap, use_morale_bonus, src } = get_active_node_args();
- use_morale_bonus = use_morale_bonus && game.bonuses[data_1.MORALE_BONUS] === data_1.ON;
+ let { src } = get_active_node_args();
+ const use_morale_bonus = game.can_use_mb === 1 && game.bonuses[data_1.MORALE_BONUS] === data_1.ON;
const can_spend_hp = game.faction_turn === faction_id && game.hero_points[faction_id] > 0;
const can_play_card = !game.card_played;
const use_momentum = game.momentum === faction_id && src !== data_1.MOMENTUM;
if (use_momentum) {
gen_action('use_momentum');
- if (use_ap || use_morale_bonus || can_play_card) {
+ if (use_morale_bonus || can_play_card) {
view.actions['use_momentum'] = 0;
}
}
set_player_turn_prompt({
can_play_card,
can_spend_hp,
- use_ap,
+ use_ap: game.can_use_ap === 1,
use_momentum,
use_morale_bonus,
});
@@ -1518,13 +1550,10 @@ states.player_turn = {
gen_action('play_to_tableau');
gen_action('play_for_event');
}
- if (use_ap) {
- gen_action('use_ap');
- }
- if (use_morale_bonus && game.bonuses[data_1.MORALE_BONUS] === data_1.ON) {
+ if (use_morale_bonus) {
gen_action('use_morale_bonus');
}
- if (!(can_play_card || use_ap || use_morale_bonus || use_momentum)) {
+ if (!(can_play_card || use_morale_bonus || use_momentum)) {
gen_action('end_turn');
}
},
@@ -1537,6 +1566,8 @@ states.player_turn = {
if (game.faction_turn === faction_id) {
game.faction_turn = null;
game.played_card = null;
+ game.can_use_ap = 0;
+ game.can_use_mb = 0;
game.engine.push(create_function_node('end_of_player_turn', { f: faction_id }));
}
game.selected_cards[faction_id].pop();
@@ -1549,11 +1580,11 @@ states.player_turn = {
game.card_played = 1;
const faction = get_active_faction();
const { strength } = play_card_to_tableau(faction);
- update_active_node_args({
- use_morale_bonus: true,
- use_ap: true,
+ game.can_use_ap = 1;
+ game.can_use_mb = 1;
+ insert_before_active_node(create_state_node('choose_area_ap', faction, {
strength,
- });
+ }));
next();
},
play_for_event() {
@@ -1566,29 +1597,17 @@ states.player_turn = {
insert_before_active_node(node);
next();
},
- use_ap() {
- log("Action Points:");
- const faction = get_active_faction();
- const { strength } = get_active_node_args();
- update_active_node_args({
- use_ap: false,
- });
- insert_before_active_node(create_state_node('choose_area_ap', faction, {
- strength,
- }));
- next();
- },
use_momentum() {
const faction_id = get_active_faction();
game.selected_cards[faction_id].pop();
game.momentum = null;
+ game.can_use_ap = 0;
+ game.can_use_mb = 0;
resolve_active_and_proceed();
},
use_morale_bonus() {
log(`Morale Bonus:`);
- update_active_node_args({
- use_morale_bonus: false,
- });
+ game.can_use_mb = 0;
insert_before_active_node(create_state_node('activate_icon', get_active_faction()));
next();
},