From c31e8c8052386de10ef85626f508d608c6a55df1 Mon Sep 17 00:00:00 2001 From: Mischa Untaga <99098079+MischaU8@users.noreply.github.com> Date: Mon, 6 Nov 2023 17:02:27 +0100 Subject: events WIP --- cards.js | 2 +- events.txt | 92 +++++++++--------- play.js | 2 +- rules.js | 271 ++++++++++++++++++------------------------------------ tools/gencards.py | 10 +- tools/gencode.js | 4 +- 6 files changed, 146 insertions(+), 235 deletions(-) diff --git a/cards.js b/cards.js index 0a05cd4..7160abf 100644 --- a/cards.js +++ b/cards.js @@ -1,2 +1,2 @@ -const CARDS = [null, {"id": 1, "type": "support", "title": "Seneca Falls Convention", "era": "Start", "text": "Add 1 :purple_campaigner and 1 :yellow_campaigner in the Northeast region. Receive 2 :badge and add 2 :purple_or_yellow_cube in New York."}, {"id": 2, "type": "support", "title": "Property Rights for Women", "era": "Early", "text": "For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 3, "type": "support", "title": "Frances Willard", "era": "Early", "text": "Add 1 :congressional_marker in Congress and receive 2 :badge."}, {"id": 4, "type": "support", "title": "A Vindication of the Rights of Woman", "era": "Early", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 5, "type": "support", "title": "Union Victory", "era": "Early", "text": "Playable if *The Civil War* is in effect. Roll :d6. On a roll of 3-6, receive two :badge and move *The Civil War* to the discard pile."}, {"id": 6, "type": "support", "title": "Fifteenth Amendment", "era": "Early", "text": "Playable if *The Civil War* is not in effect. Roll :d6. On a roll of 3-6, add 2 :congressional_marker in Congress and add 8 :purple_or_yellow_cube anywhere, no more than 2 per state.", "persistent": "rest_of_game"}, {"id": 7, "type": "support", "title": "Reconstruction", "era": "Early", "text": "Playable if *The Civil War* is not in effect and the *Fifteenth Amendment* is in effect. Add 1 :purple_or_yellow_cube in each of Virginia, North Carolina, South Carolina, Georgia, Florida, Alabama, Mississippi, Tennessee, Arkansas, Louisiana and Texas."}, {"id": 8, "type": "support", "title": "Petition to Congress", "era": "Early", "text": "Add 1 :congressional_marker in Congress and add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 9, "type": "support", "title": "Lucy Stone", "era": "Early", "text": "Receive 1 :badge and add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 10, "type": "support", "title": "Susan B. Anthony Indicted", "era": "Early", "text": "Receive 1 :badge and add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 11, "type": "support", "title": "Anna Dickinson", "era": "Early", "text": "Receive 1 :badge and add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 12, "type": "support", "title": "Frederick Douglass", "era": "Early", "text": "Roll :d8. Add that number :purple_or_yellow_cube in the Northeast region, no more than 1 per state."}, {"id": 13, "type": "support", "title": "Frances Harper", "era": "Early", "text": "Roll :d8. Add that number :purple_or_yellow_cube in the Atlantic & Appalachia region, no more than 1 per state."}, {"id": 14, "type": "support", "title": "The Union Signal", "era": "Early", "text": "Receive 1 :badge and add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 15, "type": "support", "title": "Sojourner Truth", "era": "Early", "text": "Roll :d8. Add that number :purple_or_yellow_cube in the Midwest region, no more than 1 per state."}, {"id": 16, "type": "support", "title": "Pioneer Women", "era": "Early", "text": "Roll :d8. Add that number :purple_or_yellow_cube in the Plains region, no more than 1 per state."}, {"id": 17, "type": "support", "title": "Women to the Polls", "era": "Early", "text": "Add 2 :purple_or_yellow_cube in each of New Jersey, Pennsylvania and Delaware."}, {"id": 18, "type": "support", "title": "National Woman\u2019s Rights Convention", "era": "Early", "text": "Playable if *The Civil War* is not in effect. Add 1 :congressional_marker in Congress and 1 :purple_or_yellow_cube in one state of each region."}, {"id": 19, "type": "support", "title": "National American Woman Suffrage Association", "era": "Middle", "text": "Add 1 :purple_campaigner in the Atlantic & Appalachia region. Receive 3 :badge."}, {"id": 20, "type": "support", "title": "Jeannette Rankin", "era": "Middle", "text": "Roll :d6. On a roll of 3-6, add 1 :congressional_marker in Congress and 4 :purple_or_yellow_cube in Montana and 2 :purple_or_yellow_cube in each other state in the Plains region."}, {"id": 21, "type": "support", "title": "Ida B. Wells-Barnett", "era": "Middle", "text": "Receive 2 :badge. Add 2 :purple_or_yellow_cube in Illinois and 1 :purple_or_yellow_cube in each other state in the Midwest region."}, {"id": 22, "type": "support", "title": "The Club Movement", "era": "Middle", "text": "Receive 4 :badge."}, {"id": 23, "type": "support", "title": "Equality League of Self-Supporting Women", "era": "Middle", "text": "Receive 2 :badge. Add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 24, "type": "support", "title": "Emmeline Pankhurst", "era": "Middle", "text": "Roll :d6 :d6. Add that number :purple_or_yellow_cube anywhere, no more than 2 per state."}, {"id": 25, "type": "support", "title": "\u201cDebate Us, You Cowards!\u201d", "era": "Middle", "text": "Roll :d6 :d6. Remove that number :red_cube anywhere, no more than 2 per state."}, {"id": 26, "type": "support", "title": "Carrie Chapman Catt", "era": "Middle", "text": "Receive 2 :badge. Add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 27, "type": "support", "title": "Alice Paul & Lucy Burns", "era": "Middle", "text": "Roll :d6 :d6. Remove that number :red_cube anywhere, no more than 2 per state."}, {"id": 28, "type": "support", "title": "Inez Milholland", "era": "Middle", "text": "Add 1 :congressional_marker in Congress. Receive 2 :badge and add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 29, "type": "support", "title": "Farmers for Suffrage", "era": "Middle", "text": "Add 2 :purple_or_yellow_cube in each of Wisconsin, Minnesota, Iowa, North Dakota and South Dakota."}, {"id": 30, "type": "support", "title": "Zitkala-\u0160a", "era": "Middle", "text": "Add 2 :purple_or_yellow_cube in each of North Dakota, South Dakota, Nebraska, Montana and Wyoming."}, {"id": 31, "type": "support", "title": "Helen Keller", "era": "Middle", "text": "Roll :d6 :d6. Add that number :purple_or_yellow_cube anywhere, no more than 2 per state."}, {"id": 32, "type": "support", "title": "Maria de Lopez", "era": "Middle", "text": "Recieve 2 :badge. Add 2 :purple_or_yellow_cube in each of California, Nevada and Arizona."}, {"id": 33, "type": "support", "title": "Marie Louise Bottineau Baldwin", "era": "Middle", "text": "For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 34, "type": "support", "title": "The West\u2019s Awakening", "era": "Middle", "text": "Add 2 :purple_or_yellow_cube in each state in the West region."}, {"id": 35, "type": "support", "title": "Southern Strategy", "era": "Middle", "text": "Receive 2 :badge. Add 2 :purple_or_yellow_cube in each state in the South region. Select and place in front of you 1 available Strategy card.", "persistent": "rest_of_game"}, {"id": 36, "type": "support", "title": "Women\u2019s Trade Union League", "era": "Late", "text": "Add 1 :yellow_campaigner in the Atlantic & Appalachia region. Add 1 :congressional_marker in Congress and receive 2 :badge."}, {"id": 37, "type": "support", "title": "The Young Woman Citizen", "era": "Late", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 38, "type": "support", "title": "1918 Midterm Elections", "era": "Late", "text": "Roll :d6. On a roll of 3-6, add 3 :congressional_marker in Congress."}, {"id": 39, "type": "support", "title": "Woodrow Wilson", "era": "Late", "text": "Spend 4 :badge to select and place in front of you 1 available Strategy card."}, {"id": 40, "type": "support", "title": "Maud Wood Park", "era": "Late", "text": "Add 2 :congressional_marker in Congress."}, {"id": 41, "type": "support", "title": "Voter Registration", "era": "Late", "text": "The Suffragist player rolls :d8 instead of :d6 during Final Voting.", "persistent": "ballot_box"}, {"id": 42, "type": "support", "title": "Processions for Suffrage", "era": "Late", "text": "For the remainder of the turn, roll :d8 instead of :d6 when taking a Lobbying action. For each 6, 7 or 8 rolled, add 1 :congressional_marker in Congress.", "persistent": "rest_of_turn"}, {"id": 43, "type": "support", "title": "Prison Tour Special", "era": "Late", "text": "For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 44, "type": "support", "title": "Victory Map", "era": "Late", "text": "Add 1 :purple_or_yellow_cube in each state in the West and Plains regions. Add 1 :purple_or_yellow_cube in each of Texas, Arkansas, Illinois, Michigan, New York and Vermont."}, {"id": 45, "type": "support", "title": "Women and World War I", "era": "Late", "text": "Playable if *War in Europe* is in effect. Add 10 :purple_or_yellow_cube anywhere, no more than 2 per state."}, {"id": 46, "type": "support", "title": "Eighteenth Amendment", "era": "Late", "text": "Roll :d6. On a roll of 3-6, add 1 congressional_marker in Congress and receive 2 :badge.", "persistent": "rest_of_game"}, {"id": 47, "type": "support", "title": "Mary McLeod Bethune", "era": "Late", "text": "Roll :d8 :d8. Remove that number :red_cube anywhere, no more than 2 per state."}, {"id": 48, "type": "support", "title": "Make a Home Run for Suffrage", "era": "Late", "text": "Roll :d8 :d8. Remove that number :red_cube anywhere, no more than 2 per state."}, {"id": 49, "type": "support", "title": "Mary Church Terrell", "era": "Late", "text": "Roll :d8 :d8. Add that number :purple_or_yellow_cube anywhere, no more than 2 per state."}, {"id": 50, "type": "support", "title": "Tea Parties for Suffrage", "era": "Late", "text": "Add 1 :congressional_marker in Congress and receive 4 :badge"}, {"id": 51, "type": "support", "title": "Dr. Mabel Ping-Hua Lee", "era": "Late", "text": "Roll :d8 :d8. Add that number :purple_or_yellow_cube anywhere, no more than 2 per state."}, {"id": 52, "type": "support", "title": "Miss Febb Wins the Last Vote", "era": "Late", "text": "The Suffragist player wins all ties during Final Voting.", "persistent": "ballot_box"}, {"id": 53, "type": "opposition", "title": "The Patriarchy", "era": "Start", "text": "Add 1 :red_campaigner in the South region. Receive 4 :badge. Add 1 :red_cube in each state in the Northeast region, the Atlantic & Appalachia region, the South region and the Midwest region."}, {"id": 54, "type": "opposition", "title": "The Civil War", "era": "Early", "text": "Remove 1 :congressional_marker from Congress. For the remainder of the turn, the Suffragist player may not add :purple_or_yellow_cube to any state in the Atlantic & Appalachia and South regions.", "persistent": "rest_of_turn"}, {"id": 55, "type": "opposition", "title": "15th Divides Suffragists", "era": "Early", "text": "Playable if *Fifteenth Amendment* is in effect. Remove all :purple_cube in up to 4 states. The Suffragist player loses 2 :badge."}, {"id": 56, "type": "opposition", "title": "Senator Joseph Brown", "era": "Early", "text": "Remove 1 :congressional_marker from Congress and add 2 :red_cube in Georgia."}, {"id": 57, "type": "opposition", "title": "Minor v. Happersett", "era": "Early", "text": "Roll :d6. On a roll of 3-6, remove 1 :congressional_marker and add 2 :red_cube in Missouri."}, {"id": 58, "type": "opposition", "title": "Senate Rejects Suffrage Amendment", "era": "Early", "text": "Roll :d6. On a roll of 3-6, receive 1 :badge and remove 1 :congressional_marker from Congress."}, {"id": 59, "type": "opposition", "title": "South Dakota Rejects Suffrage", "era": "Early", "text": "Roll :d6. On a roll of 3-6, remove 1 :congressional_marker and add 2 :red_cube in South Dakota."}, {"id": 60, "type": "opposition", "title": "Gerrymandering", "era": "Early", "text": "Remove all :yellow_cube in up to 2 states."}, {"id": 61, "type": "opposition", "title": "Border States", "era": "Early", "text": "Add 1 :red_cube in each of Delaware, Maryland, West Virginia, Kentucky and Missouri."}, {"id": 62, "type": "opposition", "title": "Horace Greeley", "era": "Early", "text": "Place 2 :red_cube in each of New York and Connecticut."}, {"id": 63, "type": "opposition", "title": "New York Newspapers", "era": "Early", "text": "Place 2 :red_cube in each of New York and New Jersey."}, {"id": 64, "type": "opposition", "title": "Senator George Vest", "era": "Early", "text": "Remove 1 :congressional_marker from Congress and add 2 :red_cube in Missouri."}, {"id": 65, "type": "opposition", "title": "Catharine Beecher", "era": "Early", "text": "Roll :d4. Add that number :red_cube anywhere, no more than 1 per state."}, {"id": 66, "type": "opposition", "title": "Progress, Not Politics", "era": "Early", "text": "Draw 6 cards from your Draw Deck. Place any number of the 6 cards on the top of your Draw Deck and the rest at the bottom of your Draw Deck."}, {"id": 67, "type": "opposition", "title": "Southern \u201cHospitality\u201d", "era": "Early", "text": "Place 1 :red_cube in each of Virginia, North Carolina, South Carolina, Georgia and Tennessee."}, {"id": 68, "type": "opposition", "title": "Beer Brewers", "era": "Early", "text": "Playable if Eighteenth Amendment is not in effect. For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 69, "type": "opposition", "title": "Southern Resentment", "era": "Early", "text": "Playable if *Fifteenth Amendment* is in effect. Add 1 :red_cube in each of Texas, Louisiana, Arkansas, Mississippi and Alabama."}, {"id": 70, "type": "opposition", "title": "Old Dixie", "era": "Early", "text": "Add 1 :red_cube in each of Louisiana, Mississippi, Alabama, Georgia and Florida."}, {"id": 71, "type": "opposition", "title": "NAOWS Forms", "era": "Middle", "text": "Add 1 :red_campaigner in the Northeast region. Receive 2 :badge."}, {"id": 72, "type": "opposition", "title": "Woman and the Republic", "era": "Middle", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 73, "type": "opposition", "title": "The Ladies\u2019 Battle", "era": "Middle", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 74, "type": "opposition", "title": "Backlash to the Movement", "era": "Middle", "text": "Remove 6 :purple_or_yellow_cube from anywhere, no more than 2 per state."}, {"id": 75, "type": "opposition", "title": "Xenophobia", "era": "Middle", "text": "Remove all from any 1 :purple_cube state. Remove all :yellow_cube from any 1 state."}, {"id": 76, "type": "opposition", "title": "\u201cO Save Us Senators, From Ourselves\u201d", "era": "Middle", "text": "Add 1 :red_cube in one state of each region."}, {"id": 77, "type": "opposition", "title": "Emma Goldman", "era": "Middle", "text": "Roll :d6. Add that number :red_cube anywhere, no more than 1 per state."}, {"id": 78, "type": "opposition", "title": "The Great 1906 San Francisco Earthquake", "era": "Middle", "text": "Remove all :yellow_cube and :purple_cube from California. The Suffragist player loses 1 :badge."}, {"id": 79, "type": "opposition", "title": "A Threat to the Ideal of Womanhood", "era": "Middle", "text": "For the remainder of the turn, the Suffragist player must spend 1 :badge in order to play a card as an event.", "persistent": "rest_of_turn"}, {"id": 80, "type": "opposition", "title": "\u201cUnwarranted, Unnecessary & Dangerous Interference\u201d", "era": "Middle", "text": "Add 1 :red_cube in one state of each region."}, {"id": 81, "type": "opposition", "title": "Conservative Opposition", "era": "Middle", "text": "For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 82, "type": "opposition", "title": "The SSWSC", "era": "Middle", "text": "Playable if *Southern Strategy* is in effect. Receive 2 :badge and add 6 :red_cube in the South region, no more than 2 per state."}, {"id": 83, "type": "opposition", "title": "Western Saloons Push Suffrage Veto", "era": "Middle", "text": "Playable if *Eighteenth Amendment* is not in effect. Place 2 :red_cube in Arizona and 1 :red_cube in each of New Mexico, Nevada and Utah."}, {"id": 84, "type": "opposition", "title": "Transcontinental Railroad", "era": "Middle", "text": "Move each :red_campaigner to any region(s) without paying any :badge and then take a Campaigning action."}, {"id": 85, "type": "opposition", "title": "White Supremacy and the Suffrage Movement", "era": "Middle", "text": "Playable if *Southern Strategy* is in effect. Remove all :yellow_cube in up to 4 states. The Suffragist player loses 2 :badge."}, {"id": 86, "type": "opposition", "title": "Senator John Weeks", "era": "Middle", "text": "Remove 1 :congressional_marker from Congress and add 2 :red_cube in New Hampshire."}, {"id": 87, "type": "opposition", "title": "Senator \u201cCotton Ed\u201d Smith", "era": "Middle", "text": "Remove 1 :congressional_marker from Congress and add 2 :red_cube in South Carolina."}, {"id": 88, "type": "opposition", "title": "War in Europe", "era": "Late", "text": "Remove 1 :congressional_marker from Congress. For the remainder of the turn, the Suffragist player must spend 1 :badge in order to take a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 89, "type": "opposition", "title": "1918 Pandemic", "era": "Late", "text": "Remove 1 :congressional_marker from Congress. For the remainder of the turn, the Suffragist player must spend 1 :badge in order to play a card as an event.", "persistent": "rest_of_turn"}, {"id": 90, "type": "opposition", "title": "The Business of Being a Woman", "era": "Late", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 91, "type": "opposition", "title": "The Eden Sphinx", "era": "Late", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 92, "type": "opposition", "title": "Big Liquor\u2019s Big Money", "era": "Late", "text": "Playable if *Eighteenth Amendment* is not in effect. For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 93, "type": "opposition", "title": "Red Scare", "era": "Late", "text": "Remove all :purple_cube in up to 2 states."}, {"id": 94, "type": "opposition", "title": "Southern Women\u2019s Rejection League", "era": "Late", "text": "Playable if *Southern Strategy* is in effect. Roll :d8. Add that number :red_cube in the South region, no more than 2 per state."}, {"id": 95, "type": "opposition", "title": "United Daughters of the Confederacy", "era": "Late", "text": "Playable if *Southern Strategy* is in effect. Roll :d8. Add that number :red_cube in the South region, no more than 2 per state."}, {"id": 96, "type": "opposition", "title": "Cheers to \u201cNo on Suffrage\u201d", "era": "Late", "text": "Playable if *Eighteenth Amendment* is not in effect. Roll :d8. Add that number :red_cube anywhere, no more than 2 per state."}, {"id": 97, "type": "opposition", "title": "The Unnecessary Privilege", "era": "Late", "text": "Roll :d6. Add that number :red_cube anywhere, no more than 1 per state."}, {"id": 98, "type": "opposition", "title": "Voter Suppression", "era": "Late", "text": "The Opposition player rolls :d8 instead of :d6 during Final Voting.", "persistent": "ballot_box"}, {"id": 99, "type": "opposition", "title": "Anti-Suffrage Riots", "era": "Late", "text": "The Suffragist player must discard 2 cards from their hand at random and then draw 2 cards from the Suffragist Draw Deck."}, {"id": 100, "type": "opposition", "title": "American Constitutional League", "era": "Late", "text": "Spend 4 :badge to select, and place in front of you, 1 available Strategy card."}, {"id": 101, "type": "opposition", "title": "The Woman Patriot", "era": "Late", "text": "Receive 3 :badge."}, {"id": 102, "type": "opposition", "title": "Governor Clement\u2019s Veto", "era": "Late", "text": "Replace 1 :green_check in a state with 1 :red_x."}, {"id": 103, "type": "opposition", "title": "Senator Henry Cabot Lodge", "era": "Late", "text": "Remove 1 :congressional_marker from Congress and add 2 :red_cube in Massachusetts"}, {"id": 104, "type": "opposition", "title": "Senator William Borah", "era": "Late", "text": "Remove 1 :congressional_marker from Congress and add 2 :red_cube in Utah"}, {"id": 105, "type": "strategy", "title": "Efficient Organizing", "text": "Receive 5 :badge."}, {"id": 106, "type": "strategy", "title": "Reconsideration", "text": "Replace 1 :red_x with 2 :purple_or_yellow_cube or 1 :green_check with 2 :red_cube."}, {"id": 107, "type": "strategy", "title": "Opposition Research", "text": "Your opponent must lose half (rounded up) of their :badge."}, {"id": 108, "type": "strategy", "title": "Change In Plans", "text": "Look at your opponent\u2019s hand. Your opponent must discard 1 card of your choice that does not have a :yellow_campaigner / :purple_campaigner / :red_campaigner on it. Your opponent then draws 1 replacement card from their Draw Deck."}, {"id": 109, "type": "strategy", "title": "Bellwether State", "text": "Select one state and remove any :red_cube and add 4 :purple_or_yellow_cube or remove any :purple_or_yellow_cube and add 4 :red_cube."}, {"id": 110, "type": "strategy", "title": "Superior Lobbying", "text": "Roll 4 :d8. For each 6, 7 or 8 rolled, add 1 :congressional_marker to Congress or remove 1 :congressional_marker from Congress."}, {"id": 111, "type": "strategy", "title": "The Winning Plan", "text": "Draw 6 cards from your Draw Deck. Play 1 card for its event immediately. Place any number of the remaining 5 cards on the top of your Draw Deck and the rest at the bottom of your Draw Deck."}, {"id": 112, "type": "strategy", "title": "Regional Focus", "text": "Add 1 :purple_or_yellow_cube or 1 :red_cube per state in any one region."}, {"id": 113, "type": "strategy", "title": "Eye on the Future", "text": "Playable if it is Turn 5 or Turn 6. Look through your Draw Deck and select 1 card and play for its event immediately. Then reshuffle your Draw Deck."}, {"id": 114, "type": "strategy", "title": "Transportation", "text": "Move all of your :purple_campaigner and :yellow_campaigner OR :red_campaigner to any region(s) without playing any :badge and then take a Campaigning action."}, {"id": 115, "type": "strategy", "title": "Counter Strat", "text": "Remove one card that is \u201cin effect for the remainder of the turn\u201d and place it in the appropriate discard pile."}, {"id": 116, "type": "strategy", "title": "National Focus", "text": "Add 2 :purple_or_yellow_cube or 2 :red_cube in one state of each region."}, {"id": 117, "type": "states", "title": "California", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 118, "type": "states", "title": "Utah", "text": "Add 6 :purple_or_yellow_cube or 6 :red_cube in the West region, no more than 2 per state."}, {"id": 119, "type": "states", "title": "Montana", "text": "Receive 2 :badge."}, {"id": 120, "type": "states", "title": "Kansas", "text": "Add 6 :purple_or_yellow_cube or 6 :red_cube in the Plains region, no more than 2 per state."}, {"id": 121, "type": "states", "title": "Texas", "text": "Add 6 :purple_or_yellow_cube or 6 :red_cube in the South region, no more than 2 per state."}, {"id": 122, "type": "states", "title": "Georgia", "text": "Receive 2 :badge."}, {"id": 123, "type": "states", "title": "Illinois", "text": "Add 6 :purple_or_yellow_cube or 6 :red_cube in the Midwest region, no more than 2 per state."}, {"id": 124, "type": "states", "title": "Ohio", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 125, "type": "states", "title": "Pennsylvania", "text": "Add 6 :purple_or_yellow_cube or 6 :red_cube in the Atlantic & Appalachia region, no more than 2 per state."}, {"id": 126, "type": "states", "title": "Virginia", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 127, "type": "states", "title": "New York", "text": "Add 6 :purple_or_yellow_cube or 6 :red_cube in the Northeast region, no more than 2 per state."}, {"id": 128, "type": "states", "title": "New Jersey", "text": "Receive 2 :badge."}] +const CARDS = [null, {"id": 1, "type": "support", "name": "Seneca Falls Convention", "era": "Start", "text": "Add 1 :purple_campaigner and 1 :yellow_campaigner in the Northeast region. Receive 2 :badge and add 2 :purple_or_yellow_cube in New York."}, {"id": 2, "type": "support", "name": "Property Rights for Women", "era": "Early", "text": "For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 3, "type": "support", "name": "Frances Willard", "era": "Early", "text": "Add 1 :congressional_marker in Congress and receive 2 :badge."}, {"id": 4, "type": "support", "name": "A Vindication of the Rights of Woman", "era": "Early", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 5, "type": "support", "name": "Union Victory", "era": "Early", "text": "Playable if *The Civil War* is in effect. Roll :d6. On a roll of 3-6, receive two :badge and move *The Civil War* to the discard pile."}, {"id": 6, "type": "support", "name": "Fifteenth Amendment", "era": "Early", "text": "Playable if *The Civil War* is not in effect. Roll :d6. On a roll of 3-6, add 2 :congressional_marker in Congress and add 8 :purple_or_yellow_cube anywhere, no more than 2 per state.", "persistent": "rest_of_game"}, {"id": 7, "type": "support", "name": "Reconstruction", "era": "Early", "text": "Playable if *The Civil War* is not in effect and the *Fifteenth Amendment* is in effect. Add 1 :purple_or_yellow_cube in each of Virginia, North Carolina, South Carolina, Georgia, Florida, Alabama, Mississippi, Tennessee, Arkansas, Louisiana and Texas."}, {"id": 8, "type": "support", "name": "Petition to Congress", "era": "Early", "text": "Add 1 :congressional_marker in Congress and add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 9, "type": "support", "name": "Lucy Stone", "era": "Early", "text": "Receive 1 :badge and add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 10, "type": "support", "name": "Susan B. Anthony Indicted", "era": "Early", "text": "Receive 1 :badge and add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 11, "type": "support", "name": "Anna Dickinson", "era": "Early", "text": "Receive 1 :badge and add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 12, "type": "support", "name": "Frederick Douglass", "era": "Early", "text": "Roll :d8. Add that number :purple_or_yellow_cube in the Northeast region, no more than 1 per state."}, {"id": 13, "type": "support", "name": "Frances Harper", "era": "Early", "text": "Roll :d8. Add that number :purple_or_yellow_cube in the Atlantic & Appalachia region, no more than 1 per state."}, {"id": 14, "type": "support", "name": "The Union Signal", "era": "Early", "text": "Receive 1 :badge and add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 15, "type": "support", "name": "Sojourner Truth", "era": "Early", "text": "Roll :d8. Add that number :purple_or_yellow_cube in the Midwest region, no more than 1 per state."}, {"id": 16, "type": "support", "name": "Pioneer Women", "era": "Early", "text": "Roll :d8. Add that number :purple_or_yellow_cube in the Plains region, no more than 1 per state."}, {"id": 17, "type": "support", "name": "Women to the Polls", "era": "Early", "text": "Add 2 :purple_or_yellow_cube in each of New Jersey, Pennsylvania and Delaware."}, {"id": 18, "type": "support", "name": "National Woman\u2019s Rights Convention", "era": "Early", "text": "Playable if *The Civil War* is not in effect. Add 1 :congressional_marker in Congress and 1 :purple_or_yellow_cube in one state of each region."}, {"id": 19, "type": "support", "name": "National American Woman Suffrage Association", "era": "Middle", "text": "Add 1 :purple_campaigner in the Atlantic & Appalachia region. Receive 3 :badge."}, {"id": 20, "type": "support", "name": "Jeannette Rankin", "era": "Middle", "text": "Roll :d6. On a roll of 3-6, add 1 :congressional_marker in Congress and 4 :purple_or_yellow_cube in Montana and 2 :purple_or_yellow_cube in each other state in the Plains region."}, {"id": 21, "type": "support", "name": "Ida B. Wells-Barnett", "era": "Middle", "text": "Receive 2 :badge. Add 2 :purple_or_yellow_cube in Illinois and 1 :purple_or_yellow_cube in each other state in the Midwest region."}, {"id": 22, "type": "support", "name": "The Club Movement", "era": "Middle", "text": "Receive 4 :badge."}, {"id": 23, "type": "support", "name": "Equality League of Self-Supporting Women", "era": "Middle", "text": "Receive 2 :badge. Add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 24, "type": "support", "name": "Emmeline Pankhurst", "era": "Middle", "text": "Roll :d6 :d6. Add that number :purple_or_yellow_cube anywhere, no more than 2 per state."}, {"id": 25, "type": "support", "name": "\u201cDebate Us, You Cowards!\u201d", "era": "Middle", "text": "Roll :d6 :d6. Remove that number :red_cube anywhere, no more than 2 per state."}, {"id": 26, "type": "support", "name": "Carrie Chapman Catt", "era": "Middle", "text": "Receive 2 :badge. Add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 27, "type": "support", "name": "Alice Paul & Lucy Burns", "era": "Middle", "text": "Roll :d6 :d6. Remove that number :red_cube anywhere, no more than 2 per state."}, {"id": 28, "type": "support", "name": "Inez Milholland", "era": "Middle", "text": "Add 1 :congressional_marker in Congress. Receive 2 :badge and add 1 :purple_or_yellow_cube in one state of each region."}, {"id": 29, "type": "support", "name": "Farmers for Suffrage", "era": "Middle", "text": "Add 2 :purple_or_yellow_cube in each of Wisconsin, Minnesota, Iowa, North Dakota and South Dakota."}, {"id": 30, "type": "support", "name": "Zitkala-\u0160a", "era": "Middle", "text": "Add 2 :purple_or_yellow_cube in each of North Dakota, South Dakota, Nebraska, Montana and Wyoming."}, {"id": 31, "type": "support", "name": "Helen Keller", "era": "Middle", "text": "Roll :d6 :d6. Add that number :purple_or_yellow_cube anywhere, no more than 2 per state."}, {"id": 32, "type": "support", "name": "Maria de Lopez", "era": "Middle", "text": "Recieve 2 :badge. Add 2 :purple_or_yellow_cube in each of California, Nevada and Arizona."}, {"id": 33, "type": "support", "name": "Marie Louise Bottineau Baldwin", "era": "Middle", "text": "For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 34, "type": "support", "name": "The West\u2019s Awakening", "era": "Middle", "text": "Add 2 :purple_or_yellow_cube in each state in the West region."}, {"id": 35, "type": "support", "name": "Southern Strategy", "era": "Middle", "text": "Receive 2 :badge. Add 2 :purple_or_yellow_cube in each state in the South region. Select and place in front of you 1 available Strategy card.", "persistent": "rest_of_game"}, {"id": 36, "type": "support", "name": "Women\u2019s Trade Union League", "era": "Late", "text": "Add 1 :yellow_campaigner in the Atlantic & Appalachia region. Add 1 :congressional_marker in Congress and receive 2 :badge."}, {"id": 37, "type": "support", "name": "The Young Woman Citizen", "era": "Late", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 38, "type": "support", "name": "1918 Midterm Elections", "era": "Late", "text": "Roll :d6. On a roll of 3-6, add 3 :congressional_marker in Congress."}, {"id": 39, "type": "support", "name": "Woodrow Wilson", "era": "Late", "text": "Spend 4 :badge to select and place in front of you 1 available Strategy card."}, {"id": 40, "type": "support", "name": "Maud Wood Park", "era": "Late", "text": "Add 2 :congressional_marker in Congress."}, {"id": 41, "type": "support", "name": "Voter Registration", "era": "Late", "text": "The Suffragist player rolls :d8 instead of :d6 during Final Voting.", "persistent": "ballot_box"}, {"id": 42, "type": "support", "name": "Processions for Suffrage", "era": "Late", "text": "For the remainder of the turn, roll :d8 instead of :d6 when taking a Lobbying action. For each 6, 7 or 8 rolled, add 1 :congressional_marker in Congress.", "persistent": "rest_of_turn"}, {"id": 43, "type": "support", "name": "Prison Tour Special", "era": "Late", "text": "For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 44, "type": "support", "name": "Victory Map", "era": "Late", "text": "Add 1 :purple_or_yellow_cube in each state in the West and Plains regions. Add 1 :purple_or_yellow_cube in each of Texas, Arkansas, Illinois, Michigan, New York and Vermont."}, {"id": 45, "type": "support", "name": "Women and World War I", "era": "Late", "text": "Playable if *War in Europe* is in effect. Add 10 :purple_or_yellow_cube anywhere, no more than 2 per state."}, {"id": 46, "type": "support", "name": "Eighteenth Amendment", "era": "Late", "text": "Roll :d6. On a roll of 3-6, add 1 congressional_marker in Congress and receive 2 :badge.", "persistent": "rest_of_game"}, {"id": 47, "type": "support", "name": "Mary McLeod Bethune", "era": "Late", "text": "Roll :d8 :d8. Remove that number :red_cube anywhere, no more than 2 per state."}, {"id": 48, "type": "support", "name": "Make a Home Run for Suffrage", "era": "Late", "text": "Roll :d8 :d8. Remove that number :red_cube anywhere, no more than 2 per state."}, {"id": 49, "type": "support", "name": "Mary Church Terrell", "era": "Late", "text": "Roll :d8 :d8. Add that number :purple_or_yellow_cube anywhere, no more than 2 per state."}, {"id": 50, "type": "support", "name": "Tea Parties for Suffrage", "era": "Late", "text": "Add 1 :congressional_marker in Congress and receive 4 :badge"}, {"id": 51, "type": "support", "name": "Dr. Mabel Ping-Hua Lee", "era": "Late", "text": "Roll :d8 :d8. Add that number :purple_or_yellow_cube anywhere, no more than 2 per state."}, {"id": 52, "type": "support", "name": "Miss Febb Wins the Last Vote", "era": "Late", "text": "The Suffragist player wins all ties during Final Voting.", "persistent": "ballot_box"}, {"id": 53, "type": "opposition", "name": "The Patriarchy", "era": "Start", "text": "Add 1 :red_campaigner in the South region. Receive 4 :badge. Add 1 :red_cube in each state in the Northeast region, the Atlantic & Appalachia region, the South region and the Midwest region."}, {"id": 54, "type": "opposition", "name": "The Civil War", "era": "Early", "text": "Remove 1 :congressional_marker from Congress. For the remainder of the turn, the Suffragist player may not add :purple_or_yellow_cube to any state in the Atlantic & Appalachia and South regions.", "persistent": "rest_of_turn"}, {"id": 55, "type": "opposition", "name": "15th Divides Suffragists", "era": "Early", "text": "Playable if *Fifteenth Amendment* is in effect. Remove all :purple_cube in up to 4 states. The Suffragist player loses 2 :badge."}, {"id": 56, "type": "opposition", "name": "Senator Joseph Brown", "era": "Early", "text": "Remove 1 :congressional_marker from Congress and add 2 :red_cube in Georgia."}, {"id": 57, "type": "opposition", "name": "Minor v. Happersett", "era": "Early", "text": "Roll :d6. On a roll of 3-6, remove 1 :congressional_marker and add 2 :red_cube in Missouri."}, {"id": 58, "type": "opposition", "name": "Senate Rejects Suffrage Amendment", "era": "Early", "text": "Roll :d6. On a roll of 3-6, receive 1 :badge and remove 1 :congressional_marker from Congress."}, {"id": 59, "type": "opposition", "name": "South Dakota Rejects Suffrage", "era": "Early", "text": "Roll :d6. On a roll of 3-6, remove 1 :congressional_marker and add 2 :red_cube in South Dakota."}, {"id": 60, "type": "opposition", "name": "Gerrymandering", "era": "Early", "text": "Remove all :yellow_cube in up to 2 states."}, {"id": 61, "type": "opposition", "name": "Border States", "era": "Early", "text": "Add 1 :red_cube in each of Delaware, Maryland, West Virginia, Kentucky and Missouri."}, {"id": 62, "type": "opposition", "name": "Horace Greeley", "era": "Early", "text": "Place 2 :red_cube in each of New York and Connecticut."}, {"id": 63, "type": "opposition", "name": "New York Newspapers", "era": "Early", "text": "Place 2 :red_cube in each of New York and New Jersey."}, {"id": 64, "type": "opposition", "name": "Senator George Vest", "era": "Early", "text": "Remove 1 :congressional_marker from Congress and add 2 :red_cube in Missouri."}, {"id": 65, "type": "opposition", "name": "Catharine Beecher", "era": "Early", "text": "Roll :d4. Add that number :red_cube anywhere, no more than 1 per state."}, {"id": 66, "type": "opposition", "name": "Progress, Not Politics", "era": "Early", "text": "Draw 6 cards from your Draw Deck. Place any number of the 6 cards on the top of your Draw Deck and the rest at the bottom of your Draw Deck."}, {"id": 67, "type": "opposition", "name": "Southern \u201cHospitality\u201d", "era": "Early", "text": "Place 1 :red_cube in each of Virginia, North Carolina, South Carolina, Georgia and Tennessee."}, {"id": 68, "type": "opposition", "name": "Beer Brewers", "era": "Early", "text": "Playable if Eighteenth Amendment is not in effect. For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 69, "type": "opposition", "name": "Southern Resentment", "era": "Early", "text": "Playable if *Fifteenth Amendment* is in effect. Add 1 :red_cube in each of Texas, Louisiana, Arkansas, Mississippi and Alabama."}, {"id": 70, "type": "opposition", "name": "Old Dixie", "era": "Early", "text": "Add 1 :red_cube in each of Louisiana, Mississippi, Alabama, Georgia and Florida."}, {"id": 71, "type": "opposition", "name": "NAOWS Forms", "era": "Middle", "text": "Add 1 :red_campaigner in the Northeast region. Receive 2 :badge."}, {"id": 72, "type": "opposition", "name": "Woman and the Republic", "era": "Middle", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 73, "type": "opposition", "name": "The Ladies\u2019 Battle", "era": "Middle", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 74, "type": "opposition", "name": "Backlash to the Movement", "era": "Middle", "text": "Remove 6 :purple_or_yellow_cube from anywhere, no more than 2 per state."}, {"id": 75, "type": "opposition", "name": "Xenophobia", "era": "Middle", "text": "Remove all from any 1 :purple_cube state. Remove all :yellow_cube from any 1 state."}, {"id": 76, "type": "opposition", "name": "\u201cO Save Us Senators, From Ourselves\u201d", "era": "Middle", "text": "Add 1 :red_cube in one state of each region."}, {"id": 77, "type": "opposition", "name": "Emma Goldman", "era": "Middle", "text": "Roll :d6. Add that number :red_cube anywhere, no more than 1 per state."}, {"id": 78, "type": "opposition", "name": "The Great 1906 San Francisco Earthquake", "era": "Middle", "text": "Remove all :yellow_cube and :purple_cube from California. The Suffragist player loses 1 :badge."}, {"id": 79, "type": "opposition", "name": "A Threat to the Ideal of Womanhood", "era": "Middle", "text": "For the remainder of the turn, the Suffragist player must spend 1 :badge in order to play a card as an event.", "persistent": "rest_of_turn"}, {"id": 80, "type": "opposition", "name": "\u201cUnwarranted, Unnecessary & Dangerous Interference\u201d", "era": "Middle", "text": "Add 1 :red_cube in one state of each region."}, {"id": 81, "type": "opposition", "name": "Conservative Opposition", "era": "Middle", "text": "For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 82, "type": "opposition", "name": "The SSWSC", "era": "Middle", "text": "Playable if *Southern Strategy* is in effect. Receive 2 :badge and add 6 :red_cube in the South region, no more than 2 per state."}, {"id": 83, "type": "opposition", "name": "Western Saloons Push Suffrage Veto", "era": "Middle", "text": "Playable if *Eighteenth Amendment* is not in effect. Place 2 :red_cube in Arizona and 1 :red_cube in each of New Mexico, Nevada and Utah."}, {"id": 84, "type": "opposition", "name": "Transcontinental Railroad", "era": "Middle", "text": "Move each :red_campaigner to any region(s) without paying any :badge and then take a Campaigning action."}, {"id": 85, "type": "opposition", "name": "White Supremacy and the Suffrage Movement", "era": "Middle", "text": "Playable if *Southern Strategy* is in effect. Remove all :yellow_cube in up to 4 states. The Suffragist player loses 2 :badge."}, {"id": 86, "type": "opposition", "name": "Senator John Weeks", "era": "Middle", "text": "Remove 1 :congressional_marker from Congress and add 2 :red_cube in New Hampshire."}, {"id": 87, "type": "opposition", "name": "Senator \u201cCotton Ed\u201d Smith", "era": "Middle", "text": "Remove 1 :congressional_marker from Congress and add 2 :red_cube in South Carolina."}, {"id": 88, "type": "opposition", "name": "War in Europe", "era": "Late", "text": "Remove 1 :congressional_marker from Congress. For the remainder of the turn, the Suffragist player must spend 1 :badge in order to take a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 89, "type": "opposition", "name": "1918 Pandemic", "era": "Late", "text": "Remove 1 :congressional_marker from Congress. For the remainder of the turn, the Suffragist player must spend 1 :badge in order to play a card as an event.", "persistent": "rest_of_turn"}, {"id": 90, "type": "opposition", "name": "The Business of Being a Woman", "era": "Late", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 91, "type": "opposition", "name": "The Eden Sphinx", "era": "Late", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 92, "type": "opposition", "name": "Big Liquor\u2019s Big Money", "era": "Late", "text": "Playable if *Eighteenth Amendment* is not in effect. For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action.", "persistent": "rest_of_turn"}, {"id": 93, "type": "opposition", "name": "Red Scare", "era": "Late", "text": "Remove all :purple_cube in up to 2 states."}, {"id": 94, "type": "opposition", "name": "Southern Women\u2019s Rejection League", "era": "Late", "text": "Playable if *Southern Strategy* is in effect. Roll :d8. Add that number :red_cube in the South region, no more than 2 per state."}, {"id": 95, "type": "opposition", "name": "United Daughters of the Confederacy", "era": "Late", "text": "Playable if *Southern Strategy* is in effect. Roll :d8. Add that number :red_cube in the South region, no more than 2 per state."}, {"id": 96, "type": "opposition", "name": "Cheers to \u201cNo on Suffrage\u201d", "era": "Late", "text": "Playable if *Eighteenth Amendment* is not in effect. Roll :d8. Add that number :red_cube anywhere, no more than 2 per state."}, {"id": 97, "type": "opposition", "name": "The Unnecessary Privilege", "era": "Late", "text": "Roll :d6. Add that number :red_cube anywhere, no more than 1 per state."}, {"id": 98, "type": "opposition", "name": "Voter Suppression", "era": "Late", "text": "The Opposition player rolls :d8 instead of :d6 during Final Voting.", "persistent": "ballot_box"}, {"id": 99, "type": "opposition", "name": "Anti-Suffrage Riots", "era": "Late", "text": "The Suffragist player must discard 2 cards from their hand at random and then draw 2 cards from the Suffragist Draw Deck."}, {"id": 100, "type": "opposition", "name": "American Constitutional League", "era": "Late", "text": "Spend 4 :badge to select, and place in front of you, 1 available Strategy card."}, {"id": 101, "type": "opposition", "name": "The Woman Patriot", "era": "Late", "text": "Receive 3 :badge."}, {"id": 102, "type": "opposition", "name": "Governor Clement\u2019s Veto", "era": "Late", "text": "Replace 1 :green_check in a state with 1 :red_x."}, {"id": 103, "type": "opposition", "name": "Senator Henry Cabot Lodge", "era": "Late", "text": "Remove 1 :congressional_marker from Congress and add 2 :red_cube in Massachusetts"}, {"id": 104, "type": "opposition", "name": "Senator William Borah", "era": "Late", "text": "Remove 1 :congressional_marker from Congress and add 2 :red_cube in Utah"}, {"id": 105, "type": "strategy", "name": "Efficient Organizing", "text": "Receive 5 :badge."}, {"id": 106, "type": "strategy", "name": "Reconsideration", "text": "Replace 1 :red_x with 2 :purple_or_yellow_cube or 1 :green_check with 2 :red_cube."}, {"id": 107, "type": "strategy", "name": "Opposition Research", "text": "Your opponent must lose half (rounded up) of their :badge."}, {"id": 108, "type": "strategy", "name": "Change In Plans", "text": "Look at your opponent\u2019s hand. Your opponent must discard 1 card of your choice that does not have a :yellow_campaigner / :purple_campaigner / :red_campaigner on it. Your opponent then draws 1 replacement card from their Draw Deck."}, {"id": 109, "type": "strategy", "name": "Bellwether State", "text": "Select one state and remove any :red_cube and add 4 :purple_or_yellow_cube or remove any :purple_or_yellow_cube and add 4 :red_cube."}, {"id": 110, "type": "strategy", "name": "Superior Lobbying", "text": "Roll 4 :d8. For each 6, 7 or 8 rolled, add 1 :congressional_marker to Congress or remove 1 :congressional_marker from Congress."}, {"id": 111, "type": "strategy", "name": "The Winning Plan", "text": "Draw 6 cards from your Draw Deck. Play 1 card for its event immediately. Place any number of the remaining 5 cards on the top of your Draw Deck and the rest at the bottom of your Draw Deck."}, {"id": 112, "type": "strategy", "name": "Regional Focus", "text": "Add 1 :purple_or_yellow_cube or 1 :red_cube per state in any one region."}, {"id": 113, "type": "strategy", "name": "Eye on the Future", "text": "Playable if it is Turn 5 or Turn 6. Look through your Draw Deck and select 1 card and play for its event immediately. Then reshuffle your Draw Deck."}, {"id": 114, "type": "strategy", "name": "Transportation", "text": "Move all of your :purple_campaigner and :yellow_campaigner OR :red_campaigner to any region(s) without playing any :badge and then take a Campaigning action."}, {"id": 115, "type": "strategy", "name": "Counter Strat", "text": "Remove one card that is \u201cin effect for the remainder of the turn\u201d and place it in the appropriate discard pile."}, {"id": 116, "type": "strategy", "name": "National Focus", "text": "Add 2 :purple_or_yellow_cube or 2 :red_cube in one state of each region."}, {"id": 117, "type": "states", "name": "California", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 118, "type": "states", "name": "Utah", "text": "Add 6 :purple_or_yellow_cube or 6 :red_cube in the West region, no more than 2 per state."}, {"id": 119, "type": "states", "name": "Montana", "text": "Receive 2 :badge."}, {"id": 120, "type": "states", "name": "Kansas", "text": "Add 6 :purple_or_yellow_cube or 6 :red_cube in the Plains region, no more than 2 per state."}, {"id": 121, "type": "states", "name": "Texas", "text": "Add 6 :purple_or_yellow_cube or 6 :red_cube in the South region, no more than 2 per state."}, {"id": 122, "type": "states", "name": "Georgia", "text": "Receive 2 :badge."}, {"id": 123, "type": "states", "name": "Illinois", "text": "Add 6 :purple_or_yellow_cube or 6 :red_cube in the Midwest region, no more than 2 per state."}, {"id": 124, "type": "states", "name": "Ohio", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 125, "type": "states", "name": "Pennsylvania", "text": "Add 6 :purple_or_yellow_cube or 6 :red_cube in the Atlantic & Appalachia region, no more than 2 per state."}, {"id": 126, "type": "states", "name": "Virginia", "text": "Draw 2 cards from your Draw Deck. Discard 1 card and play the other card for its event immediately."}, {"id": 127, "type": "states", "name": "New York", "text": "Add 6 :purple_or_yellow_cube or 6 :red_cube in the Northeast region, no more than 2 per state."}, {"id": 128, "type": "states", "name": "New Jersey", "text": "Receive 2 :badge."}] if (typeof module !== 'undefined') module.exports = {CARDS} diff --git a/events.txt b/events.txt index b907480..70c9082 100644 --- a/events.txt +++ b/events.txt @@ -5,7 +5,7 @@ CARD 1 - Seneca Falls Convention add_campaigner 1 PURPLE NORTHEAST add_campaigner 1 YELLOW NORTHEAST receive_badges 2 - add_cubes 2 PURPLE_OR_YELLOW "New York" + add_cubes 2 PURPLE_OR_YELLOW us_states("New York") CARD 2 - Property Rights for Women # For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action. @@ -23,14 +23,14 @@ CARD 4 - A Vindication of the Rights of Woman CARD 5 - Union Victory # Playable if *The Civil War* is in effect. Roll :d6. On a roll of 3-6, receive two :badge and move *The Civil War* to the discard pile. - requires_persistent "The Civil War" + requires_persistent find_card("The Civil War") roll_d6_success receive_badges 2 - discard_persistent "The Civil War" + discard_persistent find_card("The Civil War") CARD 6 - Fifteenth Amendment # Playable if *The Civil War* is not in effect. Roll :d6. On a roll of 3-6, add 2 :congressional_marker in Congress and add 8 :purple_or_yellow_cube anywhere, no more than 2 per state. - requires_not_persistent "The Civil War" + requires_not_persistent find_card("The Civil War") roll_d6_success add_congress 2 add_cubes_limit 8 PURPLE_OR_YELLOW anywhere() 2 @@ -38,9 +38,9 @@ CARD 6 - Fifteenth Amendment CARD 7 - Reconstruction # Playable if *The Civil War* is not in effect and the *Fifteenth Amendment* is in effect. # Add 1 :purple_or_yellow_cube in each of Virginia, North Carolina, South Carolina, Georgia, Florida, Alabama, Mississippi, Tennessee, Arkansas, Louisiana and Texas. - requires_not_persistent "The Civil War" - requires_persistent "Fifteenth Amendment" - add_cubes_in_each_of 1 PURPLE_OR_YELLOW ["Virginia", "North Carolina", "South Carolina", "Georgia", "Florida", "Alabama", "Mississippi", "Tennessee", "Arkansas", "Louisiana", "Texas"] + requires_not_persistent find_card("The Civil War") + requires_persistent find_card("Fifteenth Amendment") + add_cubes_in_each_of 1 PURPLE_OR_YELLOW us_states("Virginia","North Carolina","South Carolina","Georgia","Florida","Alabama","Mississippi","Tennessee","Arkansas","Louisiana","Texas") CARD 8 - Petition to Congress # Add 1 :congressional_marker in Congress and add 1 :purple_or_yellow_cube in one state of each region. @@ -87,7 +87,7 @@ CARD 16 - Pioneer Women CARD 17 - Women to the Polls # Add 2 :purple_or_yellow_cube in each of New Jersey, Pennsylvania and Delaware. - add_cubes_in_each_of 2 PURPLE_OR_YELLOW ["New Jersey", "Pennsylvania", "Delaware"] + add_cubes_in_each_of 2 PURPLE_OR_YELLOW us_states("New Jersey","Pennsylvania","Delaware") CARD 18 - National Woman’s Rights Convention # Playable if *The Civil War* is not in effect. Add 1 :congressional_marker in Congress and 1 :purple_or_yellow_cube in one state of each region. @@ -104,14 +104,14 @@ CARD 20 - Jeannette Rankin # Roll :d6. On a roll of 3-6, add 1 :congressional_marker in Congress and 4 :purple_or_yellow_cube in Montana and 2 :purple_or_yellow_cube in each other state in the Plains region. roll_d6_success add_congress 1 - add_cubes 4 PURPLE_OR_YELLOW "Montana" - add_cubes_in_each_of 2 PURPLE_OR_YELLOW region_us_states_except(PLAINS, "Montana") + add_cubes 4 PURPLE_OR_YELLOW us_states("Montana") + add_cubes_in_each_of 2 PURPLE_OR_YELLOW region_us_states_except(PLAINS,us_states("Montana")) CARD 21 - Ida B. Wells-Barnett # Receive 2 :badge. Add 2 :purple_or_yellow_cube in Illinois and 1 :purple_or_yellow_cube in each other state in the Midwest region. receive_badges 2 - add_cubes 2 PURPLE_OR_YELLOW "Illinois" - add_cubes_in_each_of 1 PURPLE_OR_YELLOW region_us_states_except(MIDWEST, "Illinois") + add_cubes 2 PURPLE_OR_YELLOW us_states("Illinois") + add_cubes_in_each_of 1 PURPLE_OR_YELLOW region_us_states_except(MIDWEST,us_states("Illinois")) CARD 22 - The Club Movement # Receive 4 :badge. @@ -150,11 +150,11 @@ CARD 28 - Inez Milholland CARD 29 - Farmers for Suffrage # Add 2 :purple_or_yellow_cube in each of Wisconsin, Minnesota, Iowa, North Dakota and South Dakota. - add_cubes_in_each_of 2 PURPLE_OR_YELLOW ["Wisconsin", "Minnesota", "Iowa", "North Dakota", "South Dakota"] + add_cubes_in_each_of 2 PURPLE_OR_YELLOW us_states("Wisconsin","Minnesota","Iowa","North Dakota","South Dakota") CARD 30 - Zitkala-Ša # Add 2 :purple_or_yellow_cube in each of North Dakota, South Dakota, Nebraska, Montana and Wyoming. - add_cubes_in_each_of 2 PURPLE_OR_YELLOW ["North Dakota", "South Dakota", "Nebraska", "Montana", "Wyoming"] + add_cubes_in_each_of 2 PURPLE_OR_YELLOW us_states("North Dakota","South Dakota","Nebraska","Montana","Wyoming") CARD 31 - Helen Keller # Roll :d6 :d6. Add that number :purple_or_yellow_cube anywhere, no more than 2 per state. @@ -164,7 +164,7 @@ CARD 31 - Helen Keller CARD 32 - Maria de Lopez # Recieve 2 :badge. Add 2 :purple_or_yellow_cube in each of California, Nevada and Arizona. receive_badges 2 - add_cubes_in_each_of 2 PURPLE_OR_YELLOW ["California", "Nevada", "Arizona"] + add_cubes_in_each_of 2 PURPLE_OR_YELLOW us_states("California","Nevada","Arizona") CARD 33 - Marie Louise Bottineau Baldwin # For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action. @@ -222,12 +222,12 @@ CARD 43 - Prison Tour Special CARD 44 - Victory Map # Add 1 :purple_or_yellow_cube in each state in the West and Plains regions. Add 1 :purple_or_yellow_cube in each of Texas, Arkansas, Illinois, Michigan, New York and Vermont. - add_cubes_in_each_of 1 PURPLE_OR_YELLOW region_us_states(WEST, PLAINS) - add_cubes_in_each_of 1 PURPLE_OR_YELLOW ["Texas", "Arkansas", "Illinois", "Michigan", "New York", "Vermont"] + add_cubes_in_each_of 1 PURPLE_OR_YELLOW region_us_states(WEST,PLAINS) + add_cubes_in_each_of 1 PURPLE_OR_YELLOW us_states("Texas","Arkansas","Illinois","Michigan","New York","Vermont") CARD 45 - Women and World War I # Playable if *War in Europe* is in effect. Add 10 :purple_or_yellow_cube anywhere, no more than 2 per state. - requires_persistent "War in Europe" + requires_persistent find_card("War in Europe") add_cubes_limit 10 PURPLE_OR_YELLOW anywhere() 2 CARD 46 - Eighteenth Amendment @@ -271,7 +271,7 @@ CARD 53 - The Patriarchy # Add 1 :red_campaigner in the South region. Receive 4 :badge. Add 1 :red_cube in each state in the Northeast region, the Atlantic & Appalachia region, the South region and the Midwest region. add_campaigner 1 RED SOUTH receive_badges 4 - add_cubes_in_each_of 1 RED region_us_states(NORTHEAST, ATLANTIC_APPALACHIA, SOUTH, MIDWEST) + add_cubes_in_each_of 1 RED region_us_states(NORTHEAST,ATLANTIC_APPALACHIA,SOUTH,MIDWEST) CARD 54 - The Civil War # Remove 1 :congressional_marker from Congress. For the remainder of the turn, the Suffragist player may not add :purple_or_yellow_cube to any state in the Atlantic & Appalachia and South regions. @@ -281,20 +281,20 @@ CARD 54 - The Civil War CARD 55 - 15th Divides Suffragists # Playable if *Fifteenth Amendment* is in effect. Remove all :purple_cube in up to 4 states. The Suffragist player loses 2 :badge. - requires_persistent "Fifteenth Amendment" + requires_persistent find_card("Fifteenth Amendment") remove_all_up_to PURPLE 4 opponent_loses_badges 2 CARD 56 - Senator Joseph Brown # Remove 1 :congressional_marker from Congress and add 2 :red_cube in Georgia. remove_congress 1 - add_cubes 2 RED "Georgia" + add_cubes 2 RED us_states("Georgia") CARD 57 - Minor v. Happersett # Roll :d6. On a roll of 3-6, remove 1 :congressional_marker and add 2 :red_cube in Missouri. roll_d6_success remove_congress 1 - add_cubes 2 RED "Missouri" + add_cubes 2 RED us_states("Missouri") CARD 58 - Senate Rejects Suffrage Amendment # Roll :d6. On a roll of 3-6, receive 1 :badge and remove 1 :congressional_marker from Congress. @@ -306,7 +306,7 @@ CARD 59 - South Dakota Rejects Suffrage # Roll :d6. On a roll of 3-6, remove 1 :congressional_marker and add 2 :red_cube in South Dakota. roll_d6_success remove_congress 1 - add_cubes 2 RED "South Dakota" + add_cubes 2 RED us_states("South Dakota") CARD 60 - Gerrymandering # Remove all :yellow_cube in up to 2 states. @@ -314,20 +314,20 @@ CARD 60 - Gerrymandering CARD 61 - Border States # Add 1 :red_cube in each of Delaware, Maryland, West Virginia, Kentucky and Missouri. - add_cubes_in_each_of 1 RED ["Delaware", "Maryland", "West Virginia", "Kentucky", "Missouri"] + add_cubes_in_each_of 1 RED us_states("Delaware","Maryland","West Virginia","Kentucky","Missouri") CARD 62 - Horace Greeley # Place 2 :red_cube in each of New York and Connecticut. - add_cubes_in_each_of 2 RED ["New York", "Connecticut"] + add_cubes_in_each_of 2 RED us_states("New York","Connecticut") CARD 63 - New York Newspapers # Place 2 :red_cube in each of New York and New Jersey. - add_cubes_in_each_of 2 RED ["New York", "New Jersey"] + add_cubes_in_each_of 2 RED us_states("New York","New Jersey") CARD 64 - Senator George Vest # Remove 1 :congressional_marker from Congress and add 2 :red_cube in Missouri. remove_congress 1 - add_cubes 2 "Missouri" + add_cubes 2 us_states("Missouri") CARD 65 - Catharine Beecher # Roll :d4. Add that number :red_cube anywhere, no more than 1 per state. @@ -340,22 +340,22 @@ CARD 66 - Progress, Not Politics CARD 67 - Southern “Hospitality” # Place 1 :red_cube in each of Virginia, North Carolina, South Carolina, Georgia and Tennessee. - add_cubes_in_each_of 1 RED ["Virginia", "North Carolina", "South Carolina", "Georgia", "Tennessee"] + add_cubes_in_each_of 1 RED us_states("Virginia","North Carolina","South Carolina","Georgia","Tennessee") CARD 68 - Beer Brewers # Playable if Eighteenth Amendment is not in effect. For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action. - requires_not_persistent "Eighteenth Amendment" + requires_not_persistent find_card("Eighteenth Amendment") persistent REST_OF_TURN todo CARD 69 - Southern Resentment # Playable if *Fifteenth Amendment* is in effect. Add 1 :red_cube in each of Texas, Louisiana, Arkansas, Mississippi and Alabama. - requires_persistent "Fifteenth Amendment" - add_cubes_in_each_of 1 RED ["Texas", "Louisiana", "Arkansas", "Mississippi", "Alabama"] + requires_persistent find_card("Fifteenth Amendment") + add_cubes_in_each_of 1 RED us_states("Texas","Louisiana","Arkansas","Mississippi","Alabama") CARD 70 - Old Dixie # Add 1 :red_cube in each of Louisiana, Mississippi, Alabama, Georgia and Florida. - add_cubes_in_each_of 1 RED ["Louisiana", "Mississippi", "Alabama", "Georgia", "Florida"] + add_cubes_in_each_of 1 RED us_states("Louisiana","Mississippi","Alabama","Georgia","Florida") CARD 71 - NAOWS Forms # Add 1 :red_campaigner in the Northeast region. Receive 2 :badge. @@ -390,7 +390,7 @@ CARD 77 - Emma Goldman CARD 78 - The Great 1906 San Francisco Earthquake # Remove all :yellow_cube and :purple_cube from California. The Suffragist player loses 1 :badge. - remove_all PURPLE_OR_YELLOW "California" + remove_all PURPLE_OR_YELLOW us_states("California") opponent_loses_badges 1 CARD 79 - A Threat to the Ideal of Womanhood @@ -409,15 +409,15 @@ CARD 81 - Conservative Opposition CARD 82 - The SSWSC # Playable if *Southern Strategy* is in effect. Receive 2 :badge and add 6 :red_cube in the South region, no more than 2 per state. - requires_persistent "Southern Strategy" + requires_persistent find_card("Southern Strategy") receive_badges 2 add_cubes_limit 6 RED region_us_states(SOUTH) 2 CARD 83 - Western Saloons Push Suffrage Veto # Playable if *Eighteenth Amendment* is not in effect. Place 2 :red_cube in Arizona and 1 :red_cube in each of New Mexico, Nevada and Utah. - requires_not_persistent "Eighteenth Amendment" - add_cubes 2 RED "Arizona" - add_cubes_in_each_of 1 RED ["New Mexico", "Nevada", "Utah"] + requires_not_persistent find_card("Eighteenth Amendment") + add_cubes 2 RED us_states("Arizona") + add_cubes_in_each_of 1 RED us_states("New Mexico","Nevada","Utah") CARD 84 - Transcontinental Railroad # Move each :red_campaigner to any region(s) without paying any :badge and then take a Campaigning action. @@ -426,19 +426,19 @@ CARD 84 - Transcontinental Railroad CARD 85 - White Supremacy and the Suffrage Movement # Playable if *Southern Strategy* is in effect. Remove all :yellow_cube in up to 4 states. The Suffragist player loses 2 :badge. - requires_persistent "Southern Strategy" + requires_persistent find_card("Southern Strategy") remove_all_up_to YELLOW 4 opponent_loses_badges 2 CARD 86 - Senator John Weeks # Remove 1 :congressional_marker from Congress and add 2 :red_cube in New Hampshire. remove_congress 1 - add_cubes 2 RED "New Hampshire" + add_cubes 2 RED us_states("New Hampshire") CARD 87 - Senator “Cotton Ed” Smith # Remove 1 :congressional_marker from Congress and add 2 :red_cube in South Carolina. remove_congress 1 - add_cubes 2 RED "South Carolina" + add_cubes 2 RED us_states("South Carolina") CARD 88 - War in Europe # Remove 1 :congressional_marker from Congress. For the remainder of the turn, the Suffragist player must spend 1 :badge in order to take a Campaigning action. @@ -462,7 +462,7 @@ CARD 91 - The Eden Sphinx CARD 92 - Big Liquor’s Big Money # Playable if *Eighteenth Amendment* is not in effect. For the remainder of the turn, roll :d6 instead of :d4 when taking a Campaigning action. - requires_not_persistent "Eighteenth Amendment" + requires_not_persistent find_card("Eighteenth Amendment") persistent REST_OF_TURN todo @@ -472,19 +472,19 @@ CARD 93 - Red Scare CARD 94 - Southern Women’s Rejection League # Playable if *Southern Strategy* is in effect. Roll :d8. Add that number :red_cube in the South region, no more than 2 per state. - requires_persistent "Southern Strategy" + requires_persistent find_card("Southern Strategy") roll_d8 add_cubes_limit (game.vm.die) RED region_us_states(SOUTH) 2 CARD 95 - United Daughters of the Confederacy # Playable if *Southern Strategy* is in effect. Roll :d8. Add that number :red_cube in the South region, no more than 2 per state. - requires_persistent "Southern Strategy" + requires_persistent find_card("Southern Strategy") roll_d8 add_cubes_limit (game.vm.die) RED region_us_states(SOUTH) 2 CARD 96 - Cheers to “No on Suffrage” # Playable if *Eighteenth Amendment* is not in effect. Roll :d8. Add that number :red_cube anywhere, no more than 2 per state. - requires_persistent "Eighteenth Amendment" + requires_persistent find_card("Eighteenth Amendment") roll_d8 add_cubes_limit (game.vm.die) RED anywhere() 2 @@ -518,12 +518,12 @@ CARD 102 - Governor Clement’s Veto CARD 103 - Senator Henry Cabot Lodge # Remove 1 :congressional_marker from Congress and add 2 :red_cube in Massachusetts remove_congress 1 - add_cubes 2 RED "Massachusetts" + add_cubes 2 RED us_states("Massachusetts") CARD 104 - Senator William Borah # Remove 1 :congressional_marker from Congress and add 2 :red_cube in Utah remove_congress 1 - add_cubes 2 RED "Utah" + add_cubes 2 RED us_states("Utah") # Strategy Cards diff --git a/play.js b/play.js index abd6431..777ca06 100644 --- a/play.js +++ b/play.js @@ -235,7 +235,7 @@ function on_click_card(evt) { if (is_action('card', card)) { send_action('card', card) } else { - show_popup_menu(evt, "popup", card, CARDS[card].title) + show_popup_menu(evt, "popup", card, CARDS[card].name) } } diff --git a/rules.js b/rules.js index a4cfb6b..52dc2f5 100644 --- a/rules.js +++ b/rules.js @@ -35,6 +35,17 @@ const REGION_NAMES = [ "Northeast" ] +const PURPLE = 1 +const YELLOW = 2 +const PURPLE_OR_YELLOW = 3 +const RED = 4 +const GREEN_CHECK = 5 +const RED_X = 6 + +const REST_OF_TURN = 1 +const REST_OF_GAME = 2 +const BALLOT_BOX = 3 + const { CARDS } = require("./cards.js") const { US_STATES } = require("./data.js") @@ -56,6 +67,10 @@ function is_states_card(c) { return c >= first_states_card && c <= last_states_card } +function find_card(name) { + return CARDS.findIndex((x) => x.name === name) +} + function draw_card(deck) { if (deck.length === 0) throw Error("can't draw from empty deck") @@ -91,6 +106,28 @@ function is_player_claimed_card(c) { return player_claimed().includes(c) } +// #endregion + +// #region US_STATES & REGIONS FUNCTIONS + +function find_us_state(name) { + return US_STATES.findIndex((x) => x.name === name) +} + +function us_states(...args) { + return args.map(find_us_state) +} + +function region_us_states(region) { + const indexes = [] + US_STATES.forEach((element, index) => { + if (element.region === region) indexes.push(index) + }) + return indexes +} + +// #endregion + // #region PUBLIC FUNCTIONS exports.scenarios = [ "Standard" ] @@ -637,10 +674,6 @@ function end_event() { end_play_card(c) } -function end_crisis_breach_objective() { - goto_objective_card_play() -} - function goto_vm(proc) { game.state = "vm" game.vm = { @@ -656,7 +689,7 @@ function event_prompt(str) { str = CODE[game.vm.fp][game.vm.prompt][1] if (typeof str === "function") str = str() - view.prompt = CARDS[game.vm.fp].title + ": " + str + view.prompt = CARDS[game.vm.fp].name + ": " + str } function vm_inst(a) { @@ -782,48 +815,6 @@ function vm_ops() { goto_operations(vm_operand(1), vm_operand_spaces(2)) } -function vm_increase_revolutionary_momentum() { - if (game.red_momentum < 3) - game.state = "vm_increase_revolutionary_momentum" - else - vm_next() -} - -function vm_increase_prussian_collaboration() { - if (game.blue_momentum < 3) - game.state = "vm_increase_prussian_collaboration" - else - vm_next() -} - -function vm_may_increase_revolutionary_momentum() { - if (game.red_momentum < 3) - game.state = "vm_may_increase_revolutionary_momentum" - else - vm_next() -} - -function vm_may_increase_prussian_collaboration() { - if (game.blue_momentum < 3) - game.state = "vm_may_increase_prussian_collaboration" - else - vm_next() -} - -function vm_decrease_revolutionary_momentum() { - if (game.red_momentum > 0) - game.state = "vm_decrease_revolutionary_momentum" - else - vm_next() -} - -function vm_decrease_prussian_collaboration() { - if (game.blue_momentum > 0) - game.state = "vm_decrease_prussian_collaboration" - else - vm_next() -} - function vm_operand_spaces(x) { let s = vm_operand(x) if (typeof s === "number") @@ -969,88 +960,6 @@ states.vm_switch = { }, } -states.vm_increase_revolutionary_momentum = { - inactive: "increase Revolutionary Momentum", - prompt() { - event_prompt("Increase Revolutionary Momentum.") - view.actions.red_momentum = 1 - }, - red_momentum() { - push_undo() - increase_revolutionary_momentum() - }, -} - -states.vm_may_increase_revolutionary_momentum = { - inactive: "increase Revolutionary Momentum", - prompt() { - event_prompt("Increase Revolutionary Momentum.") - view.actions.red_momentum = 1 - view.actions.pass = 1 - }, - red_momentum() { - push_undo() - increase_revolutionary_momentum() - }, - pass() { - push_undo() - vm_next() - }, -} - -states.vm_increase_prussian_collaboration = { - inactive: "increase Prussian Collaboration", - prompt() { - event_prompt("Increase Prussian Collaboration.") - view.actions.blue_momentum = 1 - }, - blue_momentum() { - push_undo() - increase_prussian_collaboration() - }, -} - -states.vm_may_increase_prussian_collaboration = { - inactive: "increase Prussian Collaboration", - prompt() { - event_prompt("Increase Prussian Collaboration.") - view.actions.blue_momentum = 1 - view.actions.pass = 1 - }, - blue_momentum() { - push_undo() - increase_prussian_collaboration() - }, - pass() { - push_undo() - vm_next() - }, -} - -states.vm_decrease_revolutionary_momentum = { - inactive: "decrease Revolutionary Momentum", - prompt() { - event_prompt("Decrease Revolutionary Momentum.") - view.actions.red_momentum = 1 - }, - red_momentum() { - push_undo() - decrease_revolutionary_momentum() - }, -} - -states.vm_decrease_prussian_collaboration = { - inactive: "decrease Prussian Collaboration", - prompt() { - event_prompt("Decrease Prussian Collaboration.") - view.actions.blue_momentum = 1 - }, - blue_momentum() { - push_undo() - decrease_prussian_collaboration() - }, -} - function can_vm_place() { for (let s of game.vm.spaces) if (can_place_cube(s, game.vm.removed)) @@ -1078,7 +987,7 @@ states.vm_place = { space(s) { push_undo() place_cube(s, game.vm.removed) - if (game.active === COMMUNE) + if (game.active === SUF) log("Placed RC in S" + s + ".") else log("Placed BC in S" + s + ".") @@ -1115,7 +1024,7 @@ states.vm_move_disc = { event_prompt("Remove a disc to place it elsewhere.") if (game.vm.upto) view.actions.skip = 1 - if (game.active === COMMUNE) + if (game.active === SUF) for (let p = first_commune_disc; p <= last_commune_disc; ++p) gen_action_piece(p) else @@ -1125,7 +1034,7 @@ states.vm_move_disc = { piece(p) { push_undo() let s = game.pieces[p] - if (game.active === COMMUNE) + if (game.active === SUF) log("Moved RD from S" + s + ".") else log("Moved BD from S" + s + ".") @@ -1150,7 +1059,7 @@ states.vm_place_disc = { }, space(s) { push_undo() - if (game.active === COMMUNE) + if (game.active === SUF) log("Placed RD in S" + s + ".") else log("Placed BD in S" + s + ".") @@ -1228,7 +1137,7 @@ states.vm_remove = { piece(p) { push_undo() let s = game.pieces[p] - if (game.active === COMMUNE) + if (game.active === SUF) log("Removed BC from S" + s + ".") else log("Removed RC from S" + s + ".") @@ -1252,7 +1161,7 @@ states.vm_remove_own = { piece(p) { push_undo() let s = game.pieces[p] - if (game.active === COMMUNE) + if (game.active === SUF) log("Removed RC from S" + s + ".") else log("Removed BC from S" + s + ".") @@ -1463,7 +1372,7 @@ CODE[1] = [ // Seneca Falls Convention [ vm_add_campaigner, 1, PURPLE, NORTHEAST ], [ vm_add_campaigner, 1, YELLOW, NORTHEAST ], [ vm_receive_badges, 2 ], - [ vm_add_cubes, 2, PURPLE_OR_YELLOW, "New, York" ], + [ vm_add_cubes, 2, PURPLE_OR_YELLOW, us_states("New York") ], [ vm_return ], ] @@ -1485,15 +1394,15 @@ CODE[4] = [ // A Vindication of the Rights of Woman ] CODE[5] = [ // Union Victory - [ vm_requires_persistent, "The, Civil, War" ], + [ vm_requires_persistent, find_card("The Civil War") ], [ vm_roll_d6_success ], [ vm_receive_badges, 2 ], - [ vm_discard_persistent, "The, Civil, War" ], + [ vm_discard_persistent, find_card("The Civil War") ], [ vm_return ], ] CODE[6] = [ // Fifteenth Amendment - [ vm_requires_not_persistent, "The, Civil, War" ], + [ vm_requires_not_persistent, find_card("The Civil War") ], [ vm_roll_d6_success ], [ vm_add_congress, 2 ], [ vm_add_cubes_limit, 8, PURPLE_OR_YELLOW, anywhere(), 2 ], @@ -1501,9 +1410,9 @@ CODE[6] = [ // Fifteenth Amendment ] CODE[7] = [ // Reconstruction - [ vm_requires_not_persistent, "The, Civil, War" ], - [ vm_requires_persistent, "Fifteenth, Amendment" ], - [ vm_add_cubes_in_each_of, 1, PURPLE_OR_YELLOW, ["Virginia",, "North, Carolina",, "South, Carolina",, "Georgia",, "Florida",, "Alabama",, "Mississippi",, "Tennessee",, "Arkansas",, "Louisiana",, "Texas"] ], + [ vm_requires_not_persistent, find_card("The Civil War") ], + [ vm_requires_persistent, find_card("Fifteenth Amendment") ], + [ vm_add_cubes_in_each_of, 1, PURPLE_OR_YELLOW, us_states("Virginia","North Carolina","South Carolina","Georgia","Florida","Alabama","Mississippi","Tennessee","Arkansas","Louisiana","Texas") ], [ vm_return ], ] @@ -1560,7 +1469,7 @@ CODE[16] = [ // Pioneer Women ] CODE[17] = [ // Women to the Polls - [ vm_add_cubes_in_each_of, 2, PURPLE_OR_YELLOW, ["New, Jersey",, "Pennsylvania",, "Delaware"] ], + [ vm_add_cubes_in_each_of, 2, PURPLE_OR_YELLOW, us_states("New Jersey","Pennsylvania","Delaware") ], [ vm_return ], ] @@ -1580,15 +1489,15 @@ CODE[19] = [ // National American Woman Suffrage Association CODE[20] = [ // Jeannette Rankin [ vm_roll_d6_success ], [ vm_add_congress, 1 ], - [ vm_add_cubes, 4, PURPLE_OR_YELLOW, "Montana" ], - [ vm_add_cubes_in_each_of, 2, PURPLE_OR_YELLOW, region_us_states_except(PLAINS,, "Montana") ], + [ vm_add_cubes, 4, PURPLE_OR_YELLOW, us_states("Montana") ], + [ vm_add_cubes_in_each_of, 2, PURPLE_OR_YELLOW, region_us_states_except(PLAINS,us_states("Montana")) ], [ vm_return ], ] CODE[21] = [ // Ida B. Wells-Barnett [ vm_receive_badges, 2 ], - [ vm_add_cubes, 2, PURPLE_OR_YELLOW, "Illinois" ], - [ vm_add_cubes_in_each_of, 1, PURPLE_OR_YELLOW, region_us_states_except(MIDWEST,, "Illinois") ], + [ vm_add_cubes, 2, PURPLE_OR_YELLOW, us_states("Illinois") ], + [ vm_add_cubes_in_each_of, 1, PURPLE_OR_YELLOW, region_us_states_except(MIDWEST,us_states("Illinois")) ], [ vm_return ], ] @@ -1635,12 +1544,12 @@ CODE[28] = [ // Inez Milholland ] CODE[29] = [ // Farmers for Suffrage - [ vm_add_cubes_in_each_of, 2, PURPLE_OR_YELLOW, ["Wisconsin",, "Minnesota",, "Iowa",, "North, Dakota",, "South, Dakota"] ], + [ vm_add_cubes_in_each_of, 2, PURPLE_OR_YELLOW, us_states("Wisconsin","Minnesota","Iowa","North Dakota","South Dakota") ], [ vm_return ], ] CODE[30] = [ // Zitkala-Ša - [ vm_add_cubes_in_each_of, 2, PURPLE_OR_YELLOW, ["North, Dakota",, "South, Dakota",, "Nebraska",, "Montana",, "Wyoming"] ], + [ vm_add_cubes_in_each_of, 2, PURPLE_OR_YELLOW, us_states("North Dakota","South Dakota","Nebraska","Montana","Wyoming") ], [ vm_return ], ] @@ -1652,7 +1561,7 @@ CODE[31] = [ // Helen Keller CODE[32] = [ // Maria de Lopez [ vm_receive_badges, 2 ], - [ vm_add_cubes_in_each_of, 2, PURPLE_OR_YELLOW, ["California",, "Nevada",, "Arizona"] ], + [ vm_add_cubes_in_each_of, 2, PURPLE_OR_YELLOW, us_states("California","Nevada","Arizona") ], [ vm_return ], ] @@ -1722,13 +1631,13 @@ CODE[43] = [ // Prison Tour Special ] CODE[44] = [ // Victory Map - [ vm_add_cubes_in_each_of, 1, PURPLE_OR_YELLOW, region_us_states(WEST,, PLAINS) ], - [ vm_add_cubes_in_each_of, 1, PURPLE_OR_YELLOW, ["Texas",, "Arkansas",, "Illinois",, "Michigan",, "New, York",, "Vermont"] ], + [ vm_add_cubes_in_each_of, 1, PURPLE_OR_YELLOW, region_us_states(WEST,PLAINS) ], + [ vm_add_cubes_in_each_of, 1, PURPLE_OR_YELLOW, us_states("Texas","Arkansas","Illinois","Michigan","New York","Vermont") ], [ vm_return ], ] CODE[45] = [ // Women and World War I - [ vm_requires_persistent, "War, in, Europe" ], + [ vm_requires_persistent, find_card("War in Europe") ], [ vm_add_cubes_limit, 10, PURPLE_OR_YELLOW, anywhere(), 2 ], [ vm_return ], ] @@ -1778,7 +1687,7 @@ CODE[52] = [ // Miss Febb Wins the Last Vote CODE[53] = [ // The Patriarchy [ vm_add_campaigner, 1, RED, SOUTH ], [ vm_receive_badges, 4 ], - [ vm_add_cubes_in_each_of, 1, RED, region_us_states(NORTHEAST,, ATLANTIC_APPALACHIA,, SOUTH,, MIDWEST) ], + [ vm_add_cubes_in_each_of, 1, RED, region_us_states(NORTHEAST,ATLANTIC_APPALACHIA,SOUTH,MIDWEST) ], [ vm_return ], ] @@ -1790,7 +1699,7 @@ CODE[54] = [ // The Civil War ] CODE[55] = [ // 15th Divides Suffragists - [ vm_requires_persistent, "Fifteenth, Amendment" ], + [ vm_requires_persistent, find_card("Fifteenth Amendment") ], [ vm_remove_all_up_to, PURPLE, 4 ], [ vm_opponent_loses_badges, 2 ], [ vm_return ], @@ -1798,14 +1707,14 @@ CODE[55] = [ // 15th Divides Suffragists CODE[56] = [ // Senator Joseph Brown [ vm_remove_congress, 1 ], - [ vm_add_cubes, 2, RED, "Georgia" ], + [ vm_add_cubes, 2, RED, us_states("Georgia") ], [ vm_return ], ] CODE[57] = [ // Minor v. Happersett [ vm_roll_d6_success ], [ vm_remove_congress, 1 ], - [ vm_add_cubes, 2, RED, "Missouri" ], + [ vm_add_cubes, 2, RED, us_states("Missouri") ], [ vm_return ], ] @@ -1819,7 +1728,7 @@ CODE[58] = [ // Senate Rejects Suffrage Amendment CODE[59] = [ // South Dakota Rejects Suffrage [ vm_roll_d6_success ], [ vm_remove_congress, 1 ], - [ vm_add_cubes, 2, RED, "South, Dakota" ], + [ vm_add_cubes, 2, RED, us_states("South Dakota") ], [ vm_return ], ] @@ -1829,23 +1738,23 @@ CODE[60] = [ // Gerrymandering ] CODE[61] = [ // Border States - [ vm_add_cubes_in_each_of, 1, RED, ["Delaware",, "Maryland",, "West, Virginia",, "Kentucky",, "Missouri"] ], + [ vm_add_cubes_in_each_of, 1, RED, us_states("Delaware","Maryland","West Virginia","Kentucky","Missouri") ], [ vm_return ], ] CODE[62] = [ // Horace Greeley - [ vm_add_cubes_in_each_of, 2, RED, ["New, York",, "Connecticut"] ], + [ vm_add_cubes_in_each_of, 2, RED, us_states("New York","Connecticut") ], [ vm_return ], ] CODE[63] = [ // New York Newspapers - [ vm_add_cubes_in_each_of, 2, RED, ["New, York",, "New, Jersey"] ], + [ vm_add_cubes_in_each_of, 2, RED, us_states("New York","New Jersey") ], [ vm_return ], ] CODE[64] = [ // Senator George Vest [ vm_remove_congress, 1 ], - [ vm_add_cubes, 2, "Missouri" ], + [ vm_add_cubes, 2, us_states("Missouri") ], [ vm_return ], ] @@ -1861,25 +1770,25 @@ CODE[66] = [ // Progress, Not Politics ] CODE[67] = [ // Southern “Hospitality” - [ vm_add_cubes_in_each_of, 1, RED, ["Virginia",, "North, Carolina",, "South, Carolina",, "Georgia",, "Tennessee"] ], + [ vm_add_cubes_in_each_of, 1, RED, us_states("Virginia","North Carolina","South Carolina","Georgia","Tennessee") ], [ vm_return ], ] CODE[68] = [ // Beer Brewers - [ vm_requires_not_persistent, "Eighteenth, Amendment" ], + [ vm_requires_not_persistent, find_card("Eighteenth Amendment") ], [ vm_persistent, REST_OF_TURN ], [ vm_todo ], [ vm_return ], ] CODE[69] = [ // Southern Resentment - [ vm_requires_persistent, "Fifteenth, Amendment" ], - [ vm_add_cubes_in_each_of, 1, RED, ["Texas",, "Louisiana",, "Arkansas",, "Mississippi",, "Alabama"] ], + [ vm_requires_persistent, find_card("Fifteenth Amendment") ], + [ vm_add_cubes_in_each_of, 1, RED, us_states("Texas","Louisiana","Arkansas","Mississippi","Alabama") ], [ vm_return ], ] CODE[70] = [ // Old Dixie - [ vm_add_cubes_in_each_of, 1, RED, ["Louisiana",, "Mississippi",, "Alabama",, "Georgia",, "Florida"] ], + [ vm_add_cubes_in_each_of, 1, RED, us_states("Louisiana","Mississippi","Alabama","Georgia","Florida") ], [ vm_return ], ] @@ -1922,7 +1831,7 @@ CODE[77] = [ // Emma Goldman ] CODE[78] = [ // The Great 1906 San Francisco Earthquake - [ vm_remove_all, PURPLE_OR_YELLOW, "California" ], + [ vm_remove_all, PURPLE_OR_YELLOW, us_states("California") ], [ vm_opponent_loses_badges, 1 ], [ vm_return ], ] @@ -1945,16 +1854,16 @@ CODE[81] = [ // Conservative Opposition ] CODE[82] = [ // The SSWSC - [ vm_requires_persistent, "Southern, Strategy" ], + [ vm_requires_persistent, find_card("Southern Strategy") ], [ vm_receive_badges, 2 ], [ vm_add_cubes_limit, 6, RED, region_us_states(SOUTH), 2 ], [ vm_return ], ] CODE[83] = [ // Western Saloons Push Suffrage Veto - [ vm_requires_not_persistent, "Eighteenth, Amendment" ], - [ vm_add_cubes, 2, RED, "Arizona" ], - [ vm_add_cubes_in_each_of, 1, RED, ["New, Mexico",, "Nevada",, "Utah"] ], + [ vm_requires_not_persistent, find_card("Eighteenth Amendment") ], + [ vm_add_cubes, 2, RED, us_states("Arizona") ], + [ vm_add_cubes_in_each_of, 1, RED, us_states("New Mexico","Nevada","Utah") ], [ vm_return ], ] @@ -1965,7 +1874,7 @@ CODE[84] = [ // Transcontinental Railroad ] CODE[85] = [ // White Supremacy and the Suffrage Movement - [ vm_requires_persistent, "Southern, Strategy" ], + [ vm_requires_persistent, find_card("Southern Strategy") ], [ vm_remove_all_up_to, YELLOW, 4 ], [ vm_opponent_loses_badges, 2 ], [ vm_return ], @@ -1973,13 +1882,13 @@ CODE[85] = [ // White Supremacy and the Suffrage Movement CODE[86] = [ // Senator John Weeks [ vm_remove_congress, 1 ], - [ vm_add_cubes, 2, RED, "New, Hampshire" ], + [ vm_add_cubes, 2, RED, us_states("New Hampshire") ], [ vm_return ], ] CODE[87] = [ // Senator “Cotton Ed” Smith [ vm_remove_congress, 1 ], - [ vm_add_cubes, 2, RED, "South, Carolina" ], + [ vm_add_cubes, 2, RED, us_states("South Carolina") ], [ vm_return ], ] @@ -2008,7 +1917,7 @@ CODE[91] = [ // The Eden Sphinx ] CODE[92] = [ // Big Liquor’s Big Money - [ vm_requires_not_persistent, "Eighteenth, Amendment" ], + [ vm_requires_not_persistent, find_card("Eighteenth Amendment") ], [ vm_persistent, REST_OF_TURN ], [ vm_todo ], [ vm_return ], @@ -2020,21 +1929,21 @@ CODE[93] = [ // Red Scare ] CODE[94] = [ // Southern Women’s Rejection League - [ vm_requires_persistent, "Southern, Strategy" ], + [ vm_requires_persistent, find_card("Southern Strategy") ], [ vm_roll_d8 ], [ vm_add_cubes_limit, ()=>(game.vm.die), RED, region_us_states(SOUTH), 2 ], [ vm_return ], ] CODE[95] = [ // United Daughters of the Confederacy - [ vm_requires_persistent, "Southern, Strategy" ], + [ vm_requires_persistent, find_card("Southern Strategy") ], [ vm_roll_d8 ], [ vm_add_cubes_limit, ()=>(game.vm.die), RED, region_us_states(SOUTH), 2 ], [ vm_return ], ] CODE[96] = [ // Cheers to “No on Suffrage” - [ vm_requires_persistent, "Eighteenth, Amendment" ], + [ vm_requires_persistent, find_card("Eighteenth Amendment") ], [ vm_roll_d8 ], [ vm_add_cubes_limit, ()=>(game.vm.die), RED, anywhere(), 2 ], [ vm_return ], @@ -2075,13 +1984,13 @@ CODE[102] = [ // Governor Clement’s Veto CODE[103] = [ // Senator Henry Cabot Lodge [ vm_remove_congress, 1 ], - [ vm_add_cubes, 2, RED, "Massachusetts" ], + [ vm_add_cubes, 2, RED, us_states("Massachusetts") ], [ vm_return ], ] CODE[104] = [ // Senator William Borah [ vm_remove_congress, 1 ], - [ vm_add_cubes, 2, RED, "Utah" ], + [ vm_add_cubes, 2, RED, us_states("Utah") ], [ vm_return ], ] diff --git a/tools/gencards.py b/tools/gencards.py index 87fd401..2cb04d0 100644 --- a/tools/gencards.py +++ b/tools/gencards.py @@ -9,7 +9,7 @@ cards = [None] card = { 'id': 1, 'type': "", - 'title': "", + 'name': "", 'era': "", 'text': [], 'attrs': {} @@ -19,7 +19,7 @@ kv_pattern = r'' file_format = "tools/{}_cards.md" def flush(): - if card['title']: + if card['name']: output = card.copy() # Combine text into a single string output['text'] = " ".join(output['text']) @@ -35,10 +35,10 @@ def flush(): cards.append(output) - # print("CARD {} - {}\n# {}\n".format(output['id'], output['title'], output['text'])) + # print("CARD {} - {}\n# {}\n".format(output['id'], output['name'], output['text'])) # Reset card attributes for the next entry - card['title'] = "" + card['name'] = "" card['text'] = [] card['attrs'] = {} card['id'] += 1 @@ -57,7 +57,7 @@ def read_cards(_card_type): card['era'] = line[2:].strip() elif line.startswith("## "): flush() - card['title'] = line[3:].strip() + card['name'] = line[3:].strip() elif match := re.match(kv_pattern, line): key = match.group('key').strip() value = match.group('value').strip() diff --git a/tools/gencode.js b/tools/gencode.js index e2522e7..39c87bd 100644 --- a/tools/gencode.js +++ b/tools/gencode.js @@ -30,7 +30,9 @@ for (let line of fs.readFileSync("events.txt", "utf-8").split("\n")) { continue if (line === "EOF") break - line = line.split(" ") + // line = line.split(" ") + // split by spaces unless those spaces are within double quotes. + line = line.match(/(?:[^\s"]+|"[^"]*")+/g) switch (line[0]) { case "CARD": if (first++) { -- cgit v1.2.3