summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriainp5 <iain.pearce.ip@gmail.com>2024-10-07 23:12:06 +0100
committeriainp5 <iain.pearce.ip@gmail.com>2024-10-07 23:12:06 +0100
commit929a9f44d6599426c7cd05fd5aa621bf83085c58 (patch)
treee52585b08baae7cce793d2250f333f085bb721ee
parent9e7c1420da9c57f5af27e24ef8a84e7c3cc13116 (diff)
parent709c5f22e4e3c2e71f7385edbee0ce9922b25863 (diff)
download1989-dawn-of-freedom-929a9f44d6599426c7cd05fd5aa621bf83085c58.tar.gz
Merge branch 'new-view' into work-in-progress
-rw-r--r--play.html41
-rw-r--r--play.js120
-rw-r--r--rules.js402
3 files changed, 521 insertions, 42 deletions
diff --git a/play.html b/play.html
index 0046587..ea43ca8 100644
--- a/play.html
+++ b/play.html
@@ -20,6 +20,47 @@
<body>
<div id="tooltip" class="card hide"></div>
+
+<menu id="popup" class="popup">
+ <li class="title">TITLE
+ <li class="separator">
+ <li data-action="card_event"><span>&#x1f3b4;</span> Event
+ <!-- <li data-action="card_opp_event"><span>&#x1f3b4;</span> Resolve Opponent Event -->
+ <li data-action="card_influence"><span>&#x1F4E3;</span> Place SPs
+ <li data-action="card_support_check"><span>&#x1F4AA;</span> Support Check
+ <li data-action="card_tst"><span>&#x1F6E2;</span> Tiananmen Square Track
+</menu>
+
+<menu id="popup_opp_event" class="popup">
+ <li class="title">TITLE
+ <li class="separator">
+ <!--<li data-action="card_event"><span>&#x1f3b4;</span> Event -->
+ <li data-action="card_opp_event"><span>&#x1f3b4;</span> Resolve Opponent Event
+ <li data-action="card_influence"><span>&#x1F4E3;</span> Place SPs
+ <li data-action="card_support_check"><span>&#x1F4AA;</span> Support Check
+ <li data-action="card_tst"><span>&#x1F6E2;</span> Tiananmen Square Track
+</menu>
+
+<menu id="popup_ceh_check" class="popup">
+ <li class="title">TITLE
+ <li class="separator">
+ <li data-action="card_ceh"><span>&#x1f3b4;</span> Play with Common European Home
+ <li data-action="card_opp_event"><span>&#x1f3b4;</span> Resolve Opponent Event
+ <li data-action="card_influence"><span>&#x1F4E3;</span> Place SPs
+ <li data-action="card_support_check"><span>&#x1F4AA;</span> Support Check
+ <li data-action="card_tst"><span>&#x1F6E2;</span> Tiananmen Square Track
+</menu>
+
+<menu id="popup_tst_8" class="popup">
+ <li class="title">TITLE
+ <li class="separator">
+ <li data-action="card_tst_8"><span>&#x1f3b4;</span> Event and Operations
+ <li data-action="card_event"><span>&#x1f3b4;</span> Event
+ <li data-action="card_influence"><span>&#x1F4E3;</span> Place SPs
+ <li data-action="card_support_check"><span>&#x1F4AA;</span> Support Check
+ <li data-action="card_tst"><span>&#x1F6E2;</span> Tiananmen Square Track
+</menu>
+
<header>
<div id="toolbar">
<details>
diff --git a/play.js b/play.js
index a82a8b0..c1e4111 100644
--- a/play.js
+++ b/play.js
@@ -162,6 +162,87 @@ const spaceCharacteristicsElement = document.getElementById('space-characteristi
}
}
+// POP UP CARD MENU
+
+var card_action_menu = Array.from(document.getElementById("popup").querySelectorAll("li[data-action]")).map(e => e.dataset.action)
+
+console.log('card_action_menu', card_action_menu)
+
+function show_popup_menu(evt, menu_id, target_id, title) {
+ let menu = document.getElementById(menu_id)
+ console.log('show_popup_menu called with evt',evt, 'menu_id',menu_id, 'target_id', target_id, 'title', title)
+
+ let show = false
+ console.log(`menu.querySelectorAll("li")`, menu.querySelectorAll("li"))
+ for (let item of menu.querySelectorAll("li")) {
+ let action = item.dataset.action
+ console.log('item', item, 'action', action)
+ if (action) {
+ //console.log('in if action')
+ if (is_card_action(action, target_id)) {
+ console.log('in is_card_action',)
+ show = true
+ item.classList.add("action")
+ item.classList.remove("disabled")
+ item.onclick = function () {
+ send_action(action, target_id)
+ hide_popup_menu()
+ evt.stopPropagation()
+ }
+ } else {
+ item.classList.remove("action")
+ item.classList.add("disabled")
+ item.onclick = null
+ }
+ }
+ }
+
+ if (show) {
+ menu.onmouseleave = hide_popup_menu
+ menu.style.display = "block"
+ if (title) {
+ let item = menu.querySelector("li.title")
+ if (item) {
+ item.onclick = hide_popup_menu
+ item.textContent = title
+ }
+ }
+
+ let w = menu.clientWidth
+ let h = menu.clientHeight
+ let x = Math.max(5, Math.min(evt.clientX - w / 2, window.innerWidth - w - 5))
+ let y = Math.max(5, Math.min(evt.clientY - 12, window.innerHeight - h - 40))
+ menu.style.left = x + "px"
+ menu.style.top = y + "px"
+
+ evt.stopPropagation()
+ } else {
+ menu.style.display = "none"
+ }
+}
+
+function hide_popup_menu() {
+ document.getElementById("popup").style.display = "none"
+ document.getElementById("popup_ceh_check").style.display = "none"
+ document.getElementById("popup_opp_event").style.display = "none"
+ document.getElementById("popup_tst_8").style.display = "none"
+}
+
+
+function is_card_enabled(card) {
+ if (view.actions) {
+ if (card_action_menu.some(a => view.actions[a] && view.actions[a].includes(card)))
+ return true
+ if (view.actions.card_select && view.actions.card_select.includes(card))
+ return true
+ if (view.actions.card && view.actions.card.includes(card))
+ return true
+ }
+ return false
+}
+
+// SUPPORTING FUNCTIONS
+
function on_click_space(evt) {
if (evt.button === 0) {
const space = evt.target.my_space;
@@ -182,22 +263,47 @@ function on_click_card(evt) {
//console.log('on_click_card')
if (evt.button === 0) {
const card = evt.target.my_card;
- // console.log('on_click_card_called with card:', card);
- if (send_action('card', card)) {
- evt.stopPropagation();
- } else {
- // console.log('send_action failed for card:', card);
+ console.log('on_click_card_called with card:', card);
+ if (is_action('card', card)) {
+ console.log('in action card')
+ if (send_action('card', card)) {
+ evt.stopPropagation();
+ }
+ }
+ //First check for TST special power
+ else if (is_card_action('card_tst_8', card)) {
+ show_popup_menu(evt, "popup_tst_8", card, cards[card].name)
+ }
+
+ //Check for Common European Home
+ else if (is_card_action('card_ceh', card)) {
+ show_popup_menu(evt, "popup_ceh_check", card, cards[card].name)
+ } else if (is_card_action('card_opp_event', card)) {
+ console.log('in action card_opp_event')
+ show_popup_menu(evt, "popup_opp_event", card, cards[card].name)
+ }
+ else {
+ console.log('in action card_my_event')
+ show_popup_menu(evt, "popup", card, cards[card].name)
}
}
}
function is_action(action) {
//console.log('is_action called with: ', action)
+ console.log('view.actions', view.actions)
if (view.actions && view.actions[action])
return true
return false
}
+function is_card_action(action, card) {
+ console.log('is_card_action called with action', action, 'card', card)
+ console.log('view.actions', view.actions, 'view.actions[action]', view.actions[action])
+ if (view.actions && view.actions[action] && view.actions[action].includes(card))
+ return true
+ return false
+}
function on_log(text) { // eslint-disable-line no-unused-vars
@@ -632,8 +738,8 @@ if (view.persistent_events.includes(97)) {
action_button("bulgaria", "Bulgaria")
action_button("extra", "Take action round")
action_button("pass", "Pass")
- action_button("remove", "Remove influence")
- action_button("add", "Add influence")
+ action_button("remove", "Remove SPs")
+ action_button("add", "Add SPs")
action_button("ops", "Operations")
action_button("discard", "Discard")
action_button("strike", "Strike")
diff --git a/rules.js b/rules.js
index 1511719..f4357d2 100644
--- a/rules.js
+++ b/rules.js
@@ -266,10 +266,13 @@ exports.view = function(state, player) {
function gen_action(action, argument) {
//console.log('gen_action called with ', action, ' and ', argument)
if (argument === undefined) {
+ //console.log('argument undefined')
view.actions[action] = 1
} else {
- if (!(action in view.actions))
+ if (!(action in view.actions)) {
+ //console.log('push argument')
view.actions[action] = []
+ }
view.actions[action].push(argument)
}
//console.log('view.actions: ', view.actions, 'view.actions[action]: ', view.actions[action])
@@ -417,7 +420,7 @@ states.choose_card = {
view.prompt = 'No cards remaining: you must pass.'
gen_action('pass')
} else {
- view.prompt = 'Choose a card.'
+ view.prompt = 'Play a card.'
let available_cards
if (game.active === DEM) {
available_cards = game.democrat_hand
@@ -425,11 +428,61 @@ states.choose_card = {
available_cards = game.communist_hand
}
for (let card of available_cards) {
- gen_action_card(card)
+ //gen_action('card_event', card)
+
+ if (scoring_cards.includes(card)) {
+ /*view.prompt = 'Play for:'*/
+ gen_action('card_event', card)
+ }
+
+
+ //Check for Tiananmen Square Track awards special abilities
+ console.log('game.tst_8', game.tst_8)
+ if ((game.active === DEM && cards[card].side !== 'C' && game.dem_tst_position >= 8 && game.com_tst_position < 8 && !game.tst_8) || (game.active === COM && cards[card].side !== 'D' && game.com_tst_position >= 8 && game.dem_tst_position < 8 && !game.tst_8)){
+ gen_action('card_tst_8', card)
+ }
+
+ // Check for Reformer Rehabilitated
+
+ //console.log('game.active', game.active, 'game.playable_cards[67].playable', game.playable_cards[67].playable)
+
+
+ if (card === 67 && game.playable_cards.includes(67)){
+ if (game.active === DEM && (game.dem_tst_position > game.com_tst_position)) {
+ gen_action('card_event', card)
+ }
+ if (game.active === COM && (game.dem_tst_position < game.com_tst_position)) {
+ gen_action('card_event', card)
+ }
+ }
+
+ //Continue with normal logic
+
+ //Check if it is a card with an event which is always playable
+
+ if (cards[card].playable) {
+ get_events(card)
+ }
+
+ // Resolve cards with variable events (not Reformer)
+
+ if (card !== 67 && game.playable_cards.includes(card)) {
+ get_events(card)
+ }
+
+ //Actions for non-scoring cards
+
+ if (!scoring_cards.includes(card)) {
+ gen_action('card_influence', card)
+ if (game.active === DEM && game.dem_tst_attempted_this_turn === 0 && game.dem_tst_position <=8 || game.active === COM && game.com_tst_attempted_this_turn === 0 && game.com_tst_position <= 8) {
+ gen_action('card_tst', card)
+ }
+ gen_action('card_support_check', card)
+ }
}
}
},
- card(card) {
+ /*card_event(card) {
push_undo()
//Check if player is at risk of losing game due to held scoring card
if (!scoring_cards.includes(card)) {
@@ -442,11 +495,111 @@ states.choose_card = {
}
}
select_card(card)
- },
+ },*/
pass() {
log('No cards remaining. Passed')
end_round()
- }
+ },
+ card_event(card) {
+ push_undo()
+ select_card(card)
+ console.log('played event, game.active', game.active, 'game.view_opp_hand', game.view_opp_hand)
+ log_gap(`Played C${cards[game.played_card].number} for the event`)
+ if (scoring_cards.includes(game.played_card)) {game.phase = 0}
+ else {game.phase = 1}
+ game.return = game.active
+ if (switch_events.includes(game.played_card)) {next_player()}
+ game.vm_event = game.played_card
+ goto_vm(game.vm_event)
+ },
+ card_opp_event(card) {
+ push_undo()
+ select_card(card)
+ log_gap(`Played C${cards[game.played_card].number} for the event`)
+ game.phase = 1 /*Do I still need this?*/
+ game.vm_infl_to_do = true
+ game.return = game.active
+ game.vm_event = game.played_card
+ if (auto_resolve_events.includes(game.played_card) || switch_events.includes(game.played_card)) {
+ goto_vm(game.vm_event)}
+ else {
+ next_player()
+ log(`C${game.vm_event}`)
+ goto_vm(game.vm_event)
+ }
+ },
+ card_influence(card) {
+ push_undo()
+ select_card(card)
+ log_gap(`Played C${cards[game.played_card].number} to place SPs`)
+
+
+ // Check if Common European Home played for influence
+ if (game.played_card === 21) {
+ if (game.active === DEM) {
+ game.vp --
+ log('-1 VP')
+ if (check_vp()) {
+ return
+ }
+ } else {
+ game.vp ++
+ log('+1 VP')
+ if (check_vp()) {
+ return
+ }
+ }
+ }
+ // Check if card is opponent card with event that needs to be resolved
+
+ if (cards[game.played_card].playable || game.playable_cards.includes(game.played_card)) {
+ if ((game.active === DEM && cards[game.played_card].side === "C" ) || (game.active === COM && cards[game.played_card].side === "D")) {
+ //game.phase = 1 /*Do I need this? */
+ game.vm_event_to_do = true
+ }
+ }
+
+ // If ABHR - Set AHBR tracker to true
+ if (game.persistent_events.includes(58)) {
+ game.austria_hungary_border_reopened_tracker = true
+ }
+ game.state='add_influence'
+ valid_spaces_infl()
+ },
+ card_tst(card) {
+ push_undo()
+ select_card(card)
+ log_gap(`Played C${cards[game.played_card].number} to the Tiananmen Square Track`)
+ game.state='tiananmen_square_attempt'
+ },
+ card_support_check(card) {
+ push_undo()
+ select_card(card)
+ log_gap(`Played C${cards[game.played_card].number} for support checks`)
+
+ // Check if card is opponent card with event that needs to be resolved
+ /*if (game.phase === 0 && game.active === DEM && cards[game.played_card].side === "C" && game.playable_cards[game.played_card].playable === 1 || game.phase === 0 && game.active === COM && cards[game.played_card].side === "D" && game.playable_cards[game.played_card].playable === 1 ) {
+ game.vm_event_to_do = true
+ }*/
+
+ if (cards[game.played_card].playable || game.playable_cards.includes(game.played_card)) {
+ if ((game.active === DEM && cards[game.played_card].side === "C" ) || (game.active === COM && cards[game.played_card].side === "D")) {
+ game.vm_event_to_do = true
+ }
+ }
+
+ game.available_ops = 2
+ game.state='support_check_prep'
+ valid_spaces_sc()
+ },
+ card_tst_8(card) { /*Play card for ops and event */
+ select_card(card)
+ game.vm_event_to_do = true
+ game.vm_infl_to_do = true
+ game.tst_8 = true
+ game.state = 'vm_tst_8'
+ },
+
/*done () {
game.state = 'play_card'
} */
@@ -2093,9 +2246,81 @@ states.stasi_play_card = {
gen_action('pass')
} else {
view.prompt = `Stasi: you must play ${clean_name(cards[game.stasi_card].name)}.`
- let available_cards = [game.stasi_card]
+ /*let available_cards = [game.stasi_card]
for (let card of available_cards) {
gen_action_card(card)
+ }*/
+ let available_cards
+ if (game.active === DEM) {
+ available_cards = game.democrat_hand
+ } else {
+ available_cards = game.communist_hand
+ }
+ for (let card of available_cards) {
+ //gen_action('card_event', card)
+
+ if (scoring_cards.includes(card)) {
+ /*view.prompt = 'Play for:'*/
+ gen_action('card_event', card)
+ return
+ }
+
+ //Check if Player has Common European Home in hand
+ if (game.active === DEM) {
+ if (game.democrat_hand.includes(21) && cards[card].side === "C" && card !== 21) {
+ gen_action('card_ceh', card)
+ }
+ } else {
+ if (game.communist_hand.includes(21) && cards[card].side === "D" && card !== 21) {
+ gen_action('card_ceh', card)
+ }
+ }
+
+ //Check for Tiananmen Square Track awards special abilities
+ if ((game.active === DEM && cards[card].side !== 'C' && game.dem_tst_position >= 8 && game.com_tst_position < 8 && !game.tst_8) || (game.active === COM && cards[card].side !== 'D' && game.com_tst_position >= 8 && game.dem_tst_position < 8 && !game.tst_8)){
+ gen_action('card_tst_8', card)
+ }
+
+ // Check for Reformer Rehabilitated
+
+ //console.log('game.active', game.active, 'game.playable_cards[67].playable', game.playable_cards[67].playable)
+
+
+ if (card === 67 && game.playable_cards.includes(67)){
+ if (game.active === DEM && (game.dem_tst_position > game.com_tst_position)) {
+ gen_action('card_event', card)
+ }
+ if (game.active === COM && (game.dem_tst_position < game.com_tst_position)) {
+ gen_action('card_event', card)
+ }
+ }
+
+ //Continue with normal logic
+
+ //Check if it is a card with an event which is always playable. May not play Common European Home for event in Stasi
+
+ if (cards[card].playable && card !== 21) {
+ console.log('get events called normally for card', card)
+ get_events(card)
+ }
+
+ // Resolve cards with variable events (not Reformer, not Common European Home in Stasi)
+
+ if (card !== 67 && card !== 21 && game.playable_cards.includes(card)) {
+ console.log('get events called variable for card', card)
+ get_events(card)
+ } /*
+ if ((game.active === DEM && cards[game.played_card].side === 'D' && game.playable_cards[game.played_card].playable === 1) || (game.active === COM && cards[game.played_card].side === 'C' && game.playable_cards[game.played_card].playable ===1) || (cards[game.played_card].side === 'N'&& game.playable_cards[game.played_card].playable ===1)) {
+ gen_action('event')
+ } else if ((game.active === DEM && (cards[game.played_card].side === 'C' && game.playable_cards[game.played_card].playable ===1)) || game.active === COM && (cards[game.played_card].side === 'D' && game.playable_cards[game.played_card].playable ===1)) {
+ gen_action('opp_event')
+ } */
+
+ gen_action('card_influence', card)
+ if (game.active === DEM && game.dem_tst_attempted_this_turn === 0 && game.dem_tst_position <=8 || game.active === COM && game.com_tst_attempted_this_turn === 0 && game.com_tst_position <= 8) {
+ gen_action('card_tst', card)
+ }
+ gen_action('card_support_check', card)
}
}
},
@@ -2107,24 +2332,7 @@ states.stasi_play_card = {
find_card = game.democrat_hand.indexOf(card);
game.democrat_hand.splice(find_card, 1);
game.available_ops = get_card_ops(card)
- /*
- //Check for events which influence ops
- if (game.persistent_events['sinatra_doctrine'] && game.active === DEM) {
- log('+1 op from C50')
- game.available_ops ++
- }
- if ((game.active === DEM && game.dem_tst_position >= 2 && game.com_tst_position <= 1 && cards[card].ops === 1) || (game.active === COM && game.com_tst_position >=2 && game.dem_tst_position <= 1 && cards[card].ops === 1)) {
- log('+1 op from Tiananmen Square Track')
- game.available_ops ++
- }
- if (game.available_ops > 1 && game.prudence.DEM !== 0) {
- log(`${pluralize(game.prudence.DEM, ' op')} from C8`)
- game.available_ops += game.prudence.DEM
- if (game.available_ops < 1) {
- game.available_ops = 1
- }
- }*/
game.stasi_card = 0
if (game.democrat_hand.includes(21)) {
game.state = 'stasi_resolve_common_european_home'
@@ -2137,6 +2345,120 @@ states.stasi_play_card = {
log('No cards remaining. Passed')
end_round()
},
+ card_ceh(card) {
+ push_undo()
+ select_card(card)
+ game.stasi_card = 0
+ log(`${clean_name(cards[game.played_card].name)} played with Common European Home`)
+ //silent_discard(21)
+ game.vm_infl_to_do = true
+ game.vm_event_to_do = false
+ game.state = 'resolve_opponent_event'
+ },
+
+ card_event(card) {
+ push_undo()
+ select_card(card)
+ game.stasi_card = 0
+ console.log('played event, game.active', game.active, 'game.view_opp_hand', game.view_opp_hand)
+ log_gap(`Played C${cards[game.played_card].number} for the event`)
+ if (scoring_cards.includes(game.played_card)) {game.phase = 0}
+ else {game.phase = 1}
+ game.return = game.active
+ if (switch_events.includes(game.played_card)) {next_player()}
+ game.vm_event = game.played_card
+ goto_vm(game.vm_event)
+ },
+ card_opp_event(card) {
+ push_undo()
+ select_card(card)
+ game.stasi_card = 0
+ log_gap(`Played C${cards[game.played_card].number} for the event`)
+ game.phase = 1 /*Do I still need this?*/
+ game.vm_infl_to_do = true
+ game.return = game.active
+ game.vm_event = game.played_card
+ if (auto_resolve_events.includes(game.played_card) || switch_events.includes(game.played_card)) {
+ goto_vm(game.vm_event)}
+ else {
+ next_player()
+ log(`C${game.vm_event}`)
+ goto_vm(game.vm_event)
+ }
+ },
+ card_influence(card) {
+ push_undo()
+ select_card(card)
+ game.stasi_card = 0
+ log_gap(`Played C${cards[game.played_card].number} to place SPs`)
+
+
+ // Check if Common European Home played for influence
+ if (game.played_card === 21) {
+ if (game.active === DEM) {
+ game.vp --
+ log('-1 VP')
+ if (check_vp()) {
+ return
+ }
+ } else {
+ game.vp ++
+ log('+1 VP')
+ if (check_vp()) {
+ return
+ }
+ }
+ }
+ // Check if card is opponent card with event that needs to be resolved
+
+ if (cards[game.played_card].playable || game.playable_cards.includes(game.played_card)) {
+ if ((game.active === DEM && cards[game.played_card].side === "C" ) || (game.active === COM && cards[game.played_card].side === "D")) {
+ //game.phase = 1 /*Do I need this? */
+ game.vm_event_to_do = true
+ }
+ }
+
+ // If ABHR - Set AHBR tracker to true
+ if (game.persistent_events.includes(58)) {
+ game.austria_hungary_border_reopened_tracker = true
+ }
+ game.state='add_influence'
+ valid_spaces_infl()
+ },
+ card_tst(card) {
+ push_undo()
+ select_card(card)
+ game.stasi_card = 0
+ log_gap(`Played C${cards[game.played_card].number} to the Tiananmen Square Track`)
+ game.state='tiananmen_square_attempt'
+ },
+ card_support_check(card) {
+ push_undo()
+ select_card(card)
+ log_gap(`Played C${cards[game.played_card].number} for support checks`)
+
+ // Check if card is opponent card with event that needs to be resolved
+ /*if (game.phase === 0 && game.active === DEM && cards[game.played_card].side === "C" && game.playable_cards[game.played_card].playable === 1 || game.phase === 0 && game.active === COM && cards[game.played_card].side === "D" && game.playable_cards[game.played_card].playable === 1 ) {
+ game.vm_event_to_do = true
+ }*/
+
+ if (cards[game.played_card].playable || game.playable_cards.includes(game.played_card)) {
+ if ((game.active === DEM && cards[game.played_card].side === "C" ) || (game.active === COM && cards[game.played_card].side === "D")) {
+ game.vm_event_to_do = true
+ }
+ }
+
+ game.available_ops = 2
+ game.state='support_check_prep'
+ valid_spaces_sc()
+ },
+ card_tst_8(card) { /*Play card for ops and event */
+ select_card(card)
+ game.vm_event_to_do = true
+ game.vm_infl_to_do = true
+ game.tst_8 = true
+ game.state = 'vm_tst_8'
+ },
done () {
game.stasi_card = 0
if (game.democrat_hand.includes(21)) {
@@ -2282,6 +2604,7 @@ function remove_infl(space) {
}
function do_sc(space) {
+ clear_undo()
log_gap(`Support check: ${space}`)
let clicked_space = find_space_index(space)
@@ -2291,10 +2614,12 @@ function do_sc(space) {
log('+1 VP from C26')
game.vp ++
if (check_vp()) {
+ game.state = 'game.over'
+ console.log('after check_vp, game.state', game.state)
return
}
}
-
+ console.log('continue support check, game.state', game.state)
// Continue with Support Check Logic
let roll = Math.floor(Math.random() * 6) + 1
@@ -2462,7 +2787,7 @@ function do_sc(space) {
}
}
game.selected_space = 0
- clear_undo()
+
}
@@ -3126,6 +3451,7 @@ function permanently_remove(card) {
function check_vp() {
if (game.vp >= 20) {
goto_game_over(DEM, `${DEM} won an Automatic Victory!`)
+ console.log('after goto_game_over, game.state', game.state)
return true
} else if(game.vp <= -20) {
goto_game_over(COM, `${COM} won an Automatic Victory!`)
@@ -3147,6 +3473,7 @@ function goto_game_over(result, victory) {
game.victory = victory
log_h1("Game Over")
log(game.victory)
+ console.log('game over, game.state', game.state)
return
}
@@ -3223,14 +3550,14 @@ function find_event(card) {
function get_events(card){
if (cards[card].side === 'D') {
- if (game.active === DEM) {gen_action('event')}
- if (game.active === COM) {gen_action('opp_event')}
+ if (game.active === DEM) {gen_action('card_event', card)}
+ if (game.active === COM) {gen_action('card_opp_event', card)}
}
else if (cards[card].side === 'C') {
- if (game.active === COM) {gen_action('event')}
- if (game.active === DEM) {gen_action('opp_event')}
+ if (game.active === COM) {gen_action('card_event', card)}
+ if (game.active === DEM) {gen_action('card_opp_event', card)}
} else {
- gen_action('event')
+ gen_action('card_event', card)
}
}
@@ -3451,13 +3778,14 @@ function end_round() {
}
// Resolve end action round
-
+ //Stasi check
if(game.round_player === COM && game.persistent_events.includes(13)) {
game.round_player = DEM
if (game.active !== DEM) {
next_player()
- } else {
+ } else {
log_h3('Democratic Action Round')
+ log_h3('C13')
}
if (game.democrat_hand.includes(game.stasi_card)) {
game.state = 'stasi_play_card'
@@ -3466,11 +3794,15 @@ function end_round() {
game.state = 'choose_card'
}
return
- } else if (game.round_player === COM && game.round === 8) {
+ }
+ //Check if in extra Action Round
+ else if (game.round_player === COM && game.round === 8) {
clear_undo()
game.state = 'end_turn_4_5_4'
return
- } else if (game.round_player===COM) {
+ }
+ //Normal round end
+ else if (game.round_player===COM) {
game.round_player = DEM
if (game.active !== DEM) {
next_player()