diff --git a/cards/actions.json b/cards/actions.json index 3592347..9d54427 100644 --- a/cards/actions.json +++ b/cards/actions.json @@ -6,7 +6,7 @@ "Description": { "en": "All players must immediately play a \\stn{} card." }, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -15,7 +15,7 @@ "Description": { "en": "All players holding at least one \\btr{} must raise their hands. You may swap any held \\stn{} of yours for a \\btr{} of their choice." }, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -24,7 +24,7 @@ "Description": { "en": "All players must immediately reveal their \\textbf{Cacophony} cards. If there are 3 or fewer other \\textbf{Cacophony} cards revealed, gain that many \\pnts{}. Otherwise, discard all your \\act{} cards." }, - "Copies": 5 + "Copies": 7 }, { "Name": { @@ -33,7 +33,7 @@ "Description": { "en": "All other players discard 2 \\act{} cards. If \\textbf{Joy} is in play, double this effect." }, - "Copies": 1, + "Copies": 2, "Persistent": true }, { @@ -43,7 +43,7 @@ "Description": { "en": "You may play 3 \\act{} cards immediately. If \\textbf{Misery} has been played this round, you may play 3 \\act{} cards immediately instead." }, - "Copies": 1, + "Copies": 2, "Persistent": true }, { @@ -53,7 +53,7 @@ "Description": { "en": "Cancel the effects of another player's \\act{}." }, - "Copies": 1, + "Copies": 3, "Instant": { "en": "At any point while a player is playing an \\act{}." } @@ -65,7 +65,7 @@ "Description": { "en": "You may look at the \\act{} draw deck. You may order it or shuffle it in any way you wish before putting it back." }, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -74,7 +74,7 @@ "Description": { "en": "All players holding at least one \\brg{} must raise their hands. You may swap any held \\stn{} of yours with a \\brg{} of their choice." }, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -83,7 +83,7 @@ "Description": { "en": "You may swap two of your played \\stn{} cards." }, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -104,7 +104,7 @@ "Instant": { "en": "If a player tries to take or swap any of your held cards." }, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -113,7 +113,7 @@ "Description": { "en": "All other players must discard 2 \\act{} cards." }, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -122,7 +122,7 @@ "Description": { "en": "You may look at the played \\stn{} cards of any one other player." }, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -132,7 +132,7 @@ "en": "While this card is in effect, no \\act{} cards may be drawn." }, "Persistent": true, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -141,7 +141,7 @@ "Description": { "en": "Remove \\textbf{Famine} from play. Draw as many \\act{} cards as there are players, then give each player one card of your choosing." }, - "Copies": 1 + "Copies": 4 }, { "Name": { @@ -150,7 +150,7 @@ "Description": { "en": "Remove all persistent \\act{} cards from play." }, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -159,16 +159,16 @@ "Description": { "en": "You may turn any of your own played \\stn{} cards face-up." }, - "Copies": 1 + "Copies": 2 }, { "Name": { "en": "FEAR" }, "Description": { - "en": "While you hold this card, you may not play any other \\act{} cards." + "en": "No effect. While you hold this card, you may not play any other \\act{} cards." }, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -177,7 +177,7 @@ "Description": { "en": "If another player has \\textbf{Love}, they may reveal it and discard it, and you both gain 2 \\pnts{}. Only the first player to reveal will gain \\pnts{}. If no player reveals \\textbf{Love}, you lose 2 \\pnts{}." }, - "Copies": 3 + "Copies": 5 }, { "Name": { @@ -186,7 +186,7 @@ "Description": { "en": "All players must give you one of their \\act{} cards, of their choosing." }, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -195,7 +195,7 @@ "Description": { "en": "All players, including yourself, must reveal one of their played \\stn{} cards and then return it to their hand." }, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -207,6 +207,121 @@ "Instant": { "en": "If an \\act{} allows a player to take cards from your hand" }, - "Copies": 1 + "Copies": 2 + }, + { + "Name": { + "en": "SUCKER PUNCH" + }, + "Description": { + "en": "Flip their \\stn{} over and reveal it. If it is \\brg{}, gain 1 \\pnt{}. If it is \\btr{}, take 2 \\pnts{} from the player." + }, + "Instant": { + "en": "When a player plays a \\stn{} against you" + }, + "Copies": 2 + }, + { + "Name": { + "en": "CLIQUERY" + }, + "Description": { + "en": "All members of the \\textbf{Queer Throatslitting Collective}, except yourself, must reveal themselves." + }, + "Copies": 2 + }, + { + "Name": { + "en": "TATTLETALE" + }, + "Description": { + "en": "All members of the \\textbf{League of Inordinate Reprobates}, except yourself, must reveal themselves." + }, + "Copies": 2 + }, + { + "Name": { + "en": "BOTANICAL ARSON" + }, + "Description": { + "en": "All members of the \\textbf{Church of the Undying Rose}, except yourself, must reveal themselves." + }, + "Copies": 2 + }, + { + "Name": { + "en": "CYCLE of REVENGE" + }, + "Description": { + "en": "All members of the \\textbf{Vengeful Sacrificium}, except yourself, must reveal themselves." + }, + "Copies": 2 + }, + { + "Name": { + "en": "VICIOUSNESS" + }, + "Description": { + "en": "All members of \\textbf{Ye Brothers Merry}, except yourself, must reveal themselves." + }, + "Copies": 2 + }, + { + "Name": { + "en": "ALLEGATIONS" + }, + "Description": { + "en": "You may accuse another player of being a member of any group. If you are correct, they must reveal themselves and give you 2 \\pnts{}." + }, + "Copies": 2 + }, + { + "Name": { + "en": "SAVOIR FAIRE" + }, + "Description": { + "en": "Take 2 \\pnts{} from the player." + }, + "Instant": { + "en": "When a player is forcibly revealed to be a member of any group." + }, + "Copies": 2 + }, + { + "Name": { + "en": "LOADSHEDDING" + }, + "Description": { + "en": "While this card is in effect, players do not have to reveal their alliances." + }, + "Persistent": true, + "Copies": 2 + }, + { + "Name": { + "en": "UNEXPECTED SURGE" + }, + "Description": { + "en": "Remove \\textbf{Loadshedding} from play. Choose 3 players to reveal at least once of their alliances each." + }, + "Copies": 2 + }, + { + "Name": { + "en": "RALLYING CRY" + }, + "Description": { + "en": "Reveal one of your alliances. Other players in this alliance may also reveal themselves. Each of you receives 1 \\pnt{} per revealed player." + }, + "Copies": 2 + }, + { + "Name": { + "en": "SOLE SURVIVOR" + }, + "Description": { + "en": "Choose a player, who must reveal at least one of their alliances. All other members of this alliance must reveal themselves and lose 1 \\pnt{}." + }, + "Copies": 2 } ] \ No newline at end of file diff --git a/cards/sigils.json b/cards/sigils.json new file mode 100644 index 0000000..3b8d046 --- /dev/null +++ b/cards/sigils.json @@ -0,0 +1,62 @@ +[ + { + "Name": { + "en": "QUEER THROATSLITTING COLLECTIVE" + }, + "Description": { + "en": "Our found family will find yours." + }, + "Initials": { + "en": "QTSC" + }, + "Copies": 6 + }, + { + "Name": { + "en": "LEAGUE of INORDINATE REPROBATES" + }, + "Description": { + "en": "Trouble caused is trouble reified." + }, + "Initials": { + "en": "LoIR" + }, + "Copies": 6 + }, + { + "Name": { + "en": "CHURCH OF THE UNDYING ROSE" + }, + "Description": { + "en": "Love heals all wounds, but we cause some of them." + }, + "Initials": { + "en": "CotUR" + }, + "Copies": 6 + }, + { + "Name": { + "en": "VENGEFUL SACRIFICIUM" + }, + "Description": { + "en": "Once burned, twice as petty." + }, + "Initials": { + "en": "VS" + }, + "Copies": 6 + }, + { + "Name": { + "en": "YE BROTHERS JOYOUS" + }, + "Description": { + "en": "Happiness, or oblivion." + }, + "Initials": { + "en": "YBJ" + }, + "Copies": 6 + } +] \ No newline at end of file diff --git a/cards/stances.json b/cards/stances.json index 09582c8..c6429d5 100644 --- a/cards/stances.json +++ b/cards/stances.json @@ -9,7 +9,7 @@ "Type": "Bargain", "AgainstBetrayal": -1, "AgainstBargain": 3, - "Copies": 25 + "Copies": 35 }, { "Name": { @@ -20,7 +20,7 @@ }, "Type": "Betrayal", "AgainstBargain": 2, - "Copies": 25 + "Copies": 35 }, { "Name": { @@ -32,7 +32,7 @@ "Type": "Bargain", "AgainstBetrayal": -1, "AgainstBargain": 3, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -43,7 +43,7 @@ }, "Type": "Betrayal", "AgainstBargain": 4, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -55,7 +55,7 @@ "Type": "Bargain", "AgainstBetrayal": -1, "AgainstBargain": 3, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -66,7 +66,7 @@ }, "Type": "Betrayal", "AgainstBargain": 1, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -78,7 +78,7 @@ "Type": "Bargain", "AgainstBetrayal": -1, "AgainstBargain": 4, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -89,7 +89,7 @@ }, "Type": "Betrayal", "AgainstBargain": 2, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -101,7 +101,7 @@ "Type": "Bargain", "AgainstBetrayal": 1, "AgainstBargain": 1, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -113,7 +113,7 @@ "Type": "Betrayal", "AgainstBetrayal": 1, "AgainstBargain": 1, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -125,18 +125,18 @@ "Type": "Bargain", "AgainstBetrayal": -1, "AgainstBargain": 3, - "Copies": 1 + "Copies": 2 }, { "Name": { - "en": "“PEACEKEEPING”" + "en": "\\say{PEACEKEEPING}" }, "Description": { "en": "\\brg{}: take all the \\act{} cards of the other player." }, "Type": "Betrayal", "AgainstBargain": 2, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -148,7 +148,7 @@ "Type": "Bargain", "AgainstBetrayal": -2, "AgainstBargain": 4, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -159,7 +159,7 @@ }, "Type": "Betrayal", "AgainstBargain": 2, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -171,7 +171,7 @@ "Type": "Bargain", "AgainstBetrayal": -1, "AgainstBargain": 3, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -181,7 +181,7 @@ "en": "This card must be played face-up and cannot be moved or interacted with. The player this card is played against must immediately play 2 of their \\stn{} cards." }, "Type": "Betrayal", - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -193,7 +193,7 @@ "Type": "Betrayal", "AgainstBetrayal": 0, "AgainstBargain": 2, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -205,7 +205,7 @@ "Type": "Bargain", "AgainstBetrayal": -3, "AgainstBargain": 3, - "Copies": 2 + "Copies": 3 }, { "Name": { @@ -217,7 +217,7 @@ "Type": "Betrayal", "AgainstBetrayal": 0, "AgainstBargain": 0, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -229,7 +229,7 @@ "Type": "Bargain", "AgainstBetrayal": -1, "AgainstBargain": 3, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -241,7 +241,7 @@ "Type": "Betrayal", "AgainstBetrayal": -1, "AgainstBargain": -1, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -253,7 +253,7 @@ "Type": "Bargain", "AgainstBetrayal": 0, "AgainstBargain": 2, - "Copies": 1 + "Copies": 2 }, { "Name": { @@ -265,6 +265,66 @@ "Type": "Betrayal", "AgainstBetrayal": 1, "AgainstBargain": 1, + "Copies": 2 + }, + { + "Name": { + "en": "GATEKEEPING" + }, + "Description": { + "en": "\\btr{}: The other player must reveal themselves if they are a member of the \\textbf{Queer Throatslitting Collective}." + }, + "Type": "Betrayal", + "AgainstBetrayal": 0, + "AgainstBargain": 2, + "Copies": 1 + }, + { + "Name": { + "en": "RATTED OUT" + }, + "Description": { + "en": "\\btrbrg{}: if either player is a member of the \\textbf{League of Inordinate Reprobates}, they must reveal themselves. If both are members, \\brg{} loses 3 extra points." + }, + "Type": "Betrayal", + "AgainstBetrayal": 0, + "AgainstBargain": 2, + "Copies": 1 + }, + { + "Name": { + "en": "CORPSES for ROSES" + }, + "Description": { + "en": "\\btr{}: If you are a member of the \\textbf{Church of the Undying Rose}, you may reveal yourself and gain 4 \\pnts{}." + }, + "Type": "Bargain", + "AgainstBetrayal": -1, + "AgainstBargain": 3, + "Copies": 1 + }, + { + "Name": { + "en": "BLOOD PRICE" + }, + "Description": { + "en": "The other player must reveal all their alliances. If they are in the \\textbf{Vengeful Sacrificium}, you lose 2 \\pnts{}." + }, + "Type": "Betrayal", + "AgainstBetrayal": 1, + "AgainstBargain": 3, + "Copies": 1 + }, + { + "Name": { + "en": "JAUNTY TUNE" + }, + "Description": { + "en": "If either player is a member of \\textbf{Ye Brothers Merry}, they may reveal themselves and gain 1 \\pnt{}." + }, + "Type": "Bargain", + "AgainstBetrayal": -1, + "AgainstBargain": 3, "Copies": 1 } ] \ No newline at end of file diff --git a/cards/template/cards.pdf b/cards/template/cards.pdf index 30c1ef3..1a1e7f5 100644 Binary files a/cards/template/cards.pdf and b/cards/template/cards.pdf differ diff --git a/cards/template/cards.tex b/cards/template/cards.tex index 97adf38..0cd1bb4 100644 --- a/cards/template/cards.tex +++ b/cards/template/cards.tex @@ -21,6 +21,7 @@ \usepackage{anyfontsize} \usepackage{ifthen} \usepackage{array} +\usepackage{dirtytalk} \RequirePackage[active,tightpage]{preview} \PreviewEnvironment{tikzpicture} @@ -155,6 +156,21 @@ \end{tikzpicture} } +% Sigils +\newcommand{\sigil}[3]{ % Name, Description, Initials + \begin{tikzpicture} + + \draw[rounded corners = \cardcorners] (0,0) rectangle (\cardwidth - \cardmargin, \cardheight - \cardmargin); + + \node (name) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight * 0.85) [text width = \cardwidth - 2 * \cardmargin, align = center] {\Large #1}; + + \node (description) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight * 0.125) [draw = none, fill = none, thick, text width = \cardwidth - 2 * \carddescriptionmargin, align = center] { + \small \say{\textit{#2}} + }; + + \end{tikzpicture} +} + % Actions \newcommand{\action}[4]{ % Name, Description, Instant?, Persistent? \begin{tikzpicture} @@ -166,7 +182,7 @@ \node (description) at (0.5 * \cardwidth - 0.5 * \cardmargin, 0.5 * \carddescriptionheight + \carddescriptionmargin) [draw = lightgray, fill = white, thick, text width = \cardwidth - 3 * \carddescriptionmargin, minimum height = \carddescriptionheight, align = center] { \ifstrempty{#3}{}{ % Instant, add the instant icon - \small \textbf{Instant} \textit{#3} + \small \textbf{Instant}: \textit{#3} }\ifstrempty{#4}{}{ % Persistent, add the instant icon @@ -259,104 +275,117 @@ \playercard{7} \playercard{8} -% RULES - -\begin{tikzpicture} - - \draw[rounded corners = \cardcorners] (0,0) rectangle (\cardwidth - \cardmargin, \cardheight - \cardmargin); - - \node (title) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight - \cardmargin - 0.5 * \cardnameheight) [minimum height = \cardnameheight] {\LARGE CONSPIRACY}; - \node (subtitle) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight - \cardmargin - 1 * \cardnameheight) [minimum height = 0.5 * \cardnameheight] {RULES 1/3}; - \node (phase) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight - \cardmargin - 1.4 * \cardnameheight) [minimum height = 0.5 * \cardnameheight] {\small \textit{PREGAME}}; - - \node (rules) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight - \cardmargin - 5 * \cardnameheight) [text width = \cardwidth - 3 * \cardmargin, minimum height = 0.5 * \cardnameheight, align = left] { - \footnotesize - For \textit{n} players, deal each player:\\ - ~~\textit{n} + 2 \stn{} cards\\ - ~~4 \act{} cards\\ - ~~4 \fin{} cards \\ - ~\\ - Each player should prepare a \stn{} mat, which should be a page with a space for every other player. During the game, \stn{} cards will be placed here to indicate your bargains and betrayals. \\ - ~\\ - Remaining \act{} cards should be placed in a deck, face down, in the center of the table. This is the \textbf{draw deck}. \\ - ~\\ - The first player is the person whose birthday is closest to July 6th. \\ - }; - -\end{tikzpicture} - -\begin{tikzpicture} - - \draw[rounded corners = \cardcorners] (0,0) rectangle (\cardwidth - \cardmargin, \cardheight - \cardmargin); - - \node (title) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight - \cardmargin - 0.5 * \cardnameheight) [minimum height = \cardnameheight] {\LARGE CONSPIRACY}; - \node (subtitle) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight - \cardmargin - 1 * \cardnameheight) [minimum height = 0.5 * \cardnameheight] {RULES 2/3}; - \node (phase) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight - \cardmargin - 1.4 * \cardnameheight) [minimum height = 0.5 * \cardnameheight] {\small \textit{ROUNDS}}; - - \node (rules) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight - \cardmargin - 5 * \cardnameheight) [text width = \cardwidth - 3 * \cardmargin, minimum height = 0.5 * \cardnameheight, align = left] { - \footnotesize - Each player must do the following in their turn: \\ - 1. If the player has played a \stn{} against every other player, their turn is skipped. Otherwise: \\ - 2. Play a \stn{} face-down, unless otherwise specified. \\ - \footnotesize 3. Optionally play one \act{}, and resolve its effect. \\ - 4. If you are holding fewer than 8 \act{} cards, draw an \act{} from the draw deck. \\ - 5. Your turn is now over, and the player to your left begins! \\ - ~\\ - This continues until every player has filled their \stn{} mat. \\ - }; - -\end{tikzpicture} - -\begin{tikzpicture} - - \draw[rounded corners = \cardcorners] (0,0) rectangle (\cardwidth - \cardmargin, \cardheight - \cardmargin); - - \node (title) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight - \cardmargin - 0.5 * \cardnameheight) [minimum height = \cardnameheight] {\LARGE CONSPIRACY}; - \node (subtitle) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight - \cardmargin - 1 * \cardnameheight) [minimum height = 0.5 * \cardnameheight] {RULES 3/3}; - \node (phase) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight - \cardmargin - 1.4 * \cardnameheight) [minimum height = 0.5 * \cardnameheight] {\small \textit{POST-ROUND}}; - - \node (rules) at (0.5 * \cardwidth - 0.5 * \cardmargin, \cardheight - \cardmargin - 5 * \cardnameheight) [text width = \cardwidth - 3 * \cardmargin, minimum height = 0.5 * \cardnameheight, align = left] { - \footnotesize - Once all \stn{} mats have been filled, the ??? part of the round is complete. Before revealing each of your \stn{} cards, each player may choose and play a \fin{} card, face-down. \\ - ~\\ - At the same time, all players must flip their played \stn{} cards face-up, along with their played \fin{} card. \\ - ~\\ - Resolve the effects of \fin{} cards in order of priority, lowest-to-highest. Once they have all been resolved, calculate \pnts{} by resolving all \stn{} interactions in a clockwise direction. Then, go onto the next round! - Play 4 rounds if there are fewer than 5 players, otherwise play 3 rounds. \\ - }; - -\end{tikzpicture} - +% SIGILS +\sigil{QUEER THROATSLITTING COLLECTIVE}{Our found family will find yours.}{QTSC} +\sigil{QUEER THROATSLITTING COLLECTIVE}{Our found family will find yours.}{QTSC} +\sigil{QUEER THROATSLITTING COLLECTIVE}{Our found family will find yours.}{QTSC} +\sigil{QUEER THROATSLITTING COLLECTIVE}{Our found family will find yours.}{QTSC} +\sigil{QUEER THROATSLITTING COLLECTIVE}{Our found family will find yours.}{QTSC} +\sigil{QUEER THROATSLITTING COLLECTIVE}{Our found family will find yours.}{QTSC} +\sigil{LEAGUE of INORDINATE REPROBATES}{Trouble caused is trouble reified.}{LoIR} +\sigil{LEAGUE of INORDINATE REPROBATES}{Trouble caused is trouble reified.}{LoIR} +\sigil{LEAGUE of INORDINATE REPROBATES}{Trouble caused is trouble reified.}{LoIR} +\sigil{LEAGUE of INORDINATE REPROBATES}{Trouble caused is trouble reified.}{LoIR} +\sigil{LEAGUE of INORDINATE REPROBATES}{Trouble caused is trouble reified.}{LoIR} +\sigil{LEAGUE of INORDINATE REPROBATES}{Trouble caused is trouble reified.}{LoIR} +\sigil{CHURCH of the UNDYING ROSE}{Love heals all wounds. We did cause some of them.}{CotUR} +\sigil{CHURCH of the UNDYING ROSE}{Love heals all wounds. We did cause some of them.}{CotUR} +\sigil{CHURCH of the UNDYING ROSE}{Love heals all wounds. We did cause some of them.}{CotUR} +\sigil{CHURCH of the UNDYING ROSE}{Love heals all wounds. We did cause some of them.}{CotUR} +\sigil{CHURCH of the UNDYING ROSE}{Love heals all wounds. We did cause some of them.}{CotUR} +\sigil{CHURCH of the UNDYING ROSE}{Love heals all wounds. We did cause some of them.}{CotUR} +\sigil{VENGEFUL SACRIFICIUM}{Once burned, twice as petty.}{VS} +\sigil{VENGEFUL SACRIFICIUM}{Once burned, twice as petty.}{VS} +\sigil{VENGEFUL SACRIFICIUM}{Once burned, twice as petty.}{VS} +\sigil{VENGEFUL SACRIFICIUM}{Once burned, twice as petty.}{VS} +\sigil{VENGEFUL SACRIFICIUM}{Once burned, twice as petty.}{VS} +\sigil{VENGEFUL SACRIFICIUM}{Once burned, twice as petty.}{VS} +\sigil{YE BROTHERS JOYOUS}{Happiness or oblivion.}{YBJ} +\sigil{YE BROTHERS JOYOUS}{Happiness or oblivion.}{YBJ} +\sigil{YE BROTHERS JOYOUS}{Happiness or oblivion.}{YBJ} +\sigil{YE BROTHERS JOYOUS}{Happiness or oblivion.}{YBJ} +\sigil{YE BROTHERS JOYOUS}{Happiness or oblivion.}{YBJ} +\sigil{YE BROTHERS JOYOUS}{Happiness or oblivion.}{YBJ} % ACTIONS \action{NIL}{All players must immediately play a \stn{} card.}{}{} +\action{NIL}{All players must immediately play a \stn{} card.}{}{} +\action{CURIOSITY}{All players holding at least one \btr{} must raise their hands. You may swap any held \stn{} of yours for a \btr{} of their choice.}{}{} \action{CURIOSITY}{All players holding at least one \btr{} must raise their hands. You may swap any held \stn{} of yours for a \btr{} of their choice.}{}{} \action{CACOPHONY}{All players must immediately reveal their \textbf{Cacophony} cards. If there are 3 or fewer other \textbf{Cacophony} cards revealed, gain that many \pnts{}. Otherwise, discard all your \act{} cards.}{}{} \action{CACOPHONY}{All players must immediately reveal their \textbf{Cacophony} cards. If there are 3 or fewer other \textbf{Cacophony} cards revealed, gain that many \pnts{}. Otherwise, discard all your \act{} cards.}{}{} \action{CACOPHONY}{All players must immediately reveal their \textbf{Cacophony} cards. If there are 3 or fewer other \textbf{Cacophony} cards revealed, gain that many \pnts{}. Otherwise, discard all your \act{} cards.}{}{} \action{CACOPHONY}{All players must immediately reveal their \textbf{Cacophony} cards. If there are 3 or fewer other \textbf{Cacophony} cards revealed, gain that many \pnts{}. Otherwise, discard all your \act{} cards.}{}{} \action{CACOPHONY}{All players must immediately reveal their \textbf{Cacophony} cards. If there are 3 or fewer other \textbf{Cacophony} cards revealed, gain that many \pnts{}. Otherwise, discard all your \act{} cards.}{}{} +\action{CACOPHONY}{All players must immediately reveal their \textbf{Cacophony} cards. If there are 3 or fewer other \textbf{Cacophony} cards revealed, gain that many \pnts{}. Otherwise, discard all your \act{} cards.}{}{} +\action{CACOPHONY}{All players must immediately reveal their \textbf{Cacophony} cards. If there are 3 or fewer other \textbf{Cacophony} cards revealed, gain that many \pnts{}. Otherwise, discard all your \act{} cards.}{}{} +\action{MISERY}{All other players discard 2 \act{} cards. If \textbf{Joy} is in play, double this effect.}{}{true} \action{MISERY}{All other players discard 2 \act{} cards. If \textbf{Joy} is in play, double this effect.}{}{true} \action{JOY}{You may play 3 \act{} cards immediately. If \textbf{Misery} has been played this round, you may play 3 \act{} cards immediately instead.}{}{true} +\action{JOY}{You may play 3 \act{} cards immediately. If \textbf{Misery} has been played this round, you may play 3 \act{} cards immediately instead.}{}{true} +\action{IMPLOSION}{Cancel the effects of another player's \act{}.}{At any point while a player is playing an \act{}.}{} +\action{IMPLOSION}{Cancel the effects of another player's \act{}.}{At any point while a player is playing an \act{}.}{} \action{IMPLOSION}{Cancel the effects of another player's \act{}.}{At any point while a player is playing an \act{}.}{} \action{THAT WHICH is UNSEEN}{You may look at the \act{} draw deck. You may order it or shuffle it in any way you wish before putting it back.}{}{} +\action{THAT WHICH is UNSEEN}{You may look at the \act{} draw deck. You may order it or shuffle it in any way you wish before putting it back.}{}{} \action{PARANOIA}{All players holding at least one \brg{} must raise their hands. You may swap any held \stn{} of yours with a \brg{} of their choice.}{}{} +\action{PARANOIA}{All players holding at least one \brg{} must raise their hands. You may swap any held \stn{} of yours with a \brg{} of their choice.}{}{} +\action{DUPLICITY}{You may swap two of your played \stn{} cards.}{}{} \action{DUPLICITY}{You may swap two of your played \stn{} cards.}{}{} \action{BURNING TRUTH}{Choose any player who must reveal their held \stn{} cards to everyone, then give that player this \textbf{Burning Truth} card instead of discarding it.}{}{} \action{LANDMINE}{Negate that effect. The player must also discard all their \act{} cards.}{If a player tries to take or swap any of your held cards.}{} +\action{LANDMINE}{Negate that effect. The player must also discard all their \act{} cards.}{If a player tries to take or swap any of your held cards.}{} +\action{TOXIC SHOCK}{All other players must discard 2 \act{} cards.}{}{} \action{TOXIC SHOCK}{All other players must discard 2 \act{} cards.}{}{} \action{SUBTERFUGE}{You may look at the played \stn{} cards of any one other player.}{}{} +\action{SUBTERFUGE}{You may look at the played \stn{} cards of any one other player.}{}{} +\action{FAMINE}{While this card is in effect, no \act{} cards may be drawn.}{}{true} \action{FAMINE}{While this card is in effect, no \act{} cards may be drawn.}{}{true} \action{ABUNDANCE}{Remove \textbf{Famine} from play. Draw as many \act{} cards as there are players, then give each player one card of your choosing.}{}{} +\action{ABUNDANCE}{Remove \textbf{Famine} from play. Draw as many \act{} cards as there are players, then give each player one card of your choosing.}{}{} +\action{ABUNDANCE}{Remove \textbf{Famine} from play. Draw as many \act{} cards as there are players, then give each player one card of your choosing.}{}{} +\action{ABUNDANCE}{Remove \textbf{Famine} from play. Draw as many \act{} cards as there are players, then give each player one card of your choosing.}{}{} +\action{AMNESIA}{Remove all persistent \act{} cards from play.}{}{} \action{AMNESIA}{Remove all persistent \act{} cards from play.}{}{} \action{HONESTY}{You may turn any of your own played \stn{} cards face-up.}{}{} -\action{FEAR}{While you hold this card, you may not play any other \act{} cards.}{}{} +\action{HONESTY}{You may turn any of your own played \stn{} cards face-up.}{}{} +\action{FEAR}{No effect. While you hold this card, you may not play any other \act{} cards.}{}{} +\action{FEAR}{No effect. While you hold this card, you may not play any other \act{} cards.}{}{} +\action{LOVE}{If another player has \textbf{Love}, they may reveal it and discard it, and you both gain 2 \pnts{}. Only the first player to reveal will gain \pnts{}. If no player reveals \textbf{Love}, you lose 2 \pnts{}.}{}{} +\action{LOVE}{If another player has \textbf{Love}, they may reveal it and discard it, and you both gain 2 \pnts{}. Only the first player to reveal will gain \pnts{}. If no player reveals \textbf{Love}, you lose 2 \pnts{}.}{}{} \action{LOVE}{If another player has \textbf{Love}, they may reveal it and discard it, and you both gain 2 \pnts{}. Only the first player to reveal will gain \pnts{}. If no player reveals \textbf{Love}, you lose 2 \pnts{}.}{}{} \action{LOVE}{If another player has \textbf{Love}, they may reveal it and discard it, and you both gain 2 \pnts{}. Only the first player to reveal will gain \pnts{}. If no player reveals \textbf{Love}, you lose 2 \pnts{}.}{}{} \action{LOVE}{If another player has \textbf{Love}, they may reveal it and discard it, and you both gain 2 \pnts{}. Only the first player to reveal will gain \pnts{}. If no player reveals \textbf{Love}, you lose 2 \pnts{}.}{}{} \action{TITHES}{All players must give you one of their \act{} cards, of their choosing.}{}{} +\action{TITHES}{All players must give you one of their \act{} cards, of their choosing.}{}{} +\action{PURIFICATION}{All players, including yourself, must reveal one of their played \stn{} cards and then return it to their hand.}{}{} \action{PURIFICATION}{All players, including yourself, must reveal one of their played \stn{} cards and then return it to their hand.}{}{} \action{TURNABOUT is FAIR PLAY}{You may pick the card up and play it yourself immediately afterwards.}{If an \act{} allows a player to take cards from your hand}{} +\action{TURNABOUT is FAIR PLAY}{You may pick the card up and play it yourself immediately afterwards.}{If an \act{} allows a player to take cards from your hand}{} +\action{SUCKER PUNCH}{Flip their \stn{} over and reveal it. If it is \brg{}, gain 1 \pnt{}. If it is \btr{}, take 2 \pnts{} from the player.}{When a player plays a \stn{} against you}{} +\action{SUCKER PUNCH}{Flip their \stn{} over and reveal it. If it is \brg{}, gain 1 \pnt{}. If it is \btr{}, take 2 \pnts{} from the player.}{When a player plays a \stn{} against you}{} +\action{CLIQUERY}{All members of the \textbf{Queer Throatslitting Collective}, except yourself, must reveal themselves.}{}{} +\action{CLIQUERY}{All members of the \textbf{Queer Throatslitting Collective}, except yourself, must reveal themselves.}{}{} +\action{TATTLETALE}{All members of the \textbf{League of Inordinate Reprobates}, except yourself, must reveal themselves.}{}{} +\action{TATTLETALE}{All members of the \textbf{League of Inordinate Reprobates}, except yourself, must reveal themselves.}{}{} +\action{BOTANICAL ARSON}{All members of the \textbf{Church of the Undying Rose}, except yourself, must reveal themselves.}{}{} +\action{BOTANICAL ARSON}{All members of the \textbf{Church of the Undying Rose}, except yourself, must reveal themselves.}{}{} +\action{CYCLE of REVENGE}{All members of the \textbf{Vengeful Sacrificium}, except yourself, must reveal themselves.}{}{} +\action{CYCLE of REVENGE}{All members of the \textbf{Vengeful Sacrificium}, except yourself, must reveal themselves.}{}{} +\action{VICIOUSNESS}{All members of \textbf{Ye Brothers Merry}, except yourself, must reveal themselves.}{}{} +\action{VICIOUSNESS}{All members of \textbf{Ye Brothers Merry}, except yourself, must reveal themselves.}{}{} +\action{ALLEGATIONS}{You may accuse another player of being a member of any group. If you are correct, they must reveal themselves and give you 2 \pnts{}.}{}{} +\action{ALLEGATIONS}{You may accuse another player of being a member of any group. If you are correct, they must reveal themselves and give you 2 \pnts{}.}{}{} +\action{SAVOIR FAIRE}{Take 2 \pnts{} from the player.}{When a player is forcibly revealed to be a member of any group.}{} +\action{SAVOIR FAIRE}{Take 2 \pnts{} from the player.}{When a player is forcibly revealed to be a member of any group.}{} +\action{LOADSHEDDING}{While this card is in effect, players do not have to reveal their alliances.}{}{true} +\action{LOADSHEDDING}{While this card is in effect, players do not have to reveal their alliances.}{}{true} +\action{UNEXPECTED SURGE}{Remove \textbf{Loadshedding} from play. Choose 3 players to reveal at least once of their alliances each.}{}{} +\action{UNEXPECTED SURGE}{Remove \textbf{Loadshedding} from play. Choose 3 players to reveal at least once of their alliances each.}{}{} +\action{RALLYING CRY}{Reveal one of your alliances. Other players in this alliance may also reveal themselves. Each of you receives 1 \pnt{} per revealed player.}{}{} +\action{RALLYING CRY}{Reveal one of your alliances. Other players in this alliance may also reveal themselves. Each of you receives 1 \pnt{} per revealed player.}{}{} +\action{SOLE SURVIVOR}{Choose a player, who must reveal at least one of their alliances. All other members of this alliance must reveal themselves and lose 1 \pnt{}.}{}{} +\action{SOLE SURVIVOR}{Choose a player, who must reveal at least one of their alliances. All other members of this alliance must reveal themselves and lose 1 \pnt{}.}{}{} % STANCES \stance{BARGAIN}{}{BARGAIN}{3}{-1} @@ -384,6 +413,26 @@ \stance{BARGAIN}{}{BARGAIN}{3}{-1} \stance{BARGAIN}{}{BARGAIN}{3}{-1} \stance{BARGAIN}{}{BARGAIN}{3}{-1} +\stance{BARGAIN}{}{BARGAIN}{3}{-1} +\stance{BARGAIN}{}{BARGAIN}{3}{-1} +\stance{BARGAIN}{}{BARGAIN}{3}{-1} +\stance{BARGAIN}{}{BARGAIN}{3}{-1} +\stance{BARGAIN}{}{BARGAIN}{3}{-1} +\stance{BARGAIN}{}{BARGAIN}{3}{-1} +\stance{BARGAIN}{}{BARGAIN}{3}{-1} +\stance{BARGAIN}{}{BARGAIN}{3}{-1} +\stance{BARGAIN}{}{BARGAIN}{3}{-1} +\stance{BARGAIN}{}{BARGAIN}{3}{-1} +\stance{BETRAYAL}{}{BETRAYAL}{2}{0} +\stance{BETRAYAL}{}{BETRAYAL}{2}{0} +\stance{BETRAYAL}{}{BETRAYAL}{2}{0} +\stance{BETRAYAL}{}{BETRAYAL}{2}{0} +\stance{BETRAYAL}{}{BETRAYAL}{2}{0} +\stance{BETRAYAL}{}{BETRAYAL}{2}{0} +\stance{BETRAYAL}{}{BETRAYAL}{2}{0} +\stance{BETRAYAL}{}{BETRAYAL}{2}{0} +\stance{BETRAYAL}{}{BETRAYAL}{2}{0} +\stance{BETRAYAL}{}{BETRAYAL}{2}{0} \stance{BETRAYAL}{}{BETRAYAL}{2}{0} \stance{BETRAYAL}{}{BETRAYAL}{2}{0} \stance{BETRAYAL}{}{BETRAYAL}{2}{0} @@ -410,27 +459,53 @@ \stance{BETRAYAL}{}{BETRAYAL}{2}{0} \stance{BETRAYAL}{}{BETRAYAL}{2}{0} \stance{SYMBIOSIS}{\brg{}: both players gain an additional 2 \pnt{}.}{BARGAIN}{3}{-1} +\stance{SYMBIOSIS}{\brg{}: both players gain an additional 2 \pnt{}.}{BARGAIN}{3}{-1} +\stance{EXCOMMUNICATION}{This card must be played face-up.}{BETRAYAL}{4}{0} \stance{EXCOMMUNICATION}{This card must be played face-up.}{BETRAYAL}{4}{0} \stance{QUID PRO QUO}{At any time once played, this card can be flipped face-up to negate a player's \act{}.}{BARGAIN}{3}{-1} +\stance{QUID PRO QUO}{At any time once played, this card can be flipped face-up to negate a player's \act{}.}{BARGAIN}{3}{-1} +\stance{ASSASSINATION}{\brg{}: the other player loses 2 additional \pnts{}.}{BETRAYAL}{1}{0} \stance{ASSASSINATION}{\brg{}: the other player loses 2 additional \pnts{}.}{BETRAYAL}{1}{0} \stance{FAIR DEAL}{This card must be played face-up.}{BARGAIN}{4}{-1} +\stance{FAIR DEAL}{This card must be played face-up.}{BARGAIN}{4}{-1} +\stance{COUP d'ETAT}{If played against the player with the most \pnts{} in the last round, they lose 2 additional \pnts{}.}{BETRAYAL}{2}{0} \stance{COUP d'ETAT}{If played against the player with the most \pnts{} in the last round, they lose 2 additional \pnts{}.}{BETRAYAL}{2}{0} \stance{CONTRACTUAL OBLIGATIONS}{\btr{}: the other player loses 3 \pnts{}.}{BARGAIN}{1}{1} +\stance{CONTRACTUAL OBLIGATIONS}{\btr{}: the other player loses 3 \pnts{}.}{BARGAIN}{1}{1} +\stance{A TRUE NAME, SPOKEN SOFTLY}{}{BETRAYAL}{1}{1} \stance{A TRUE NAME, SPOKEN SOFTLY}{}{BETRAYAL}{1}{1} \stance{PEACEKEEPING}{\btr{}: you may take all \act{} and \fin{} cards of the other player.}{BARGAIN}{3}{-1} -\stance{“PEACEKEEPING”}{\brg{}: take all the \act{} cards of the other player.}{BETRAYAL}{2}{0} +\stance{PEACEKEEPING}{\btr{}: you may take all \act{} and \fin{} cards of the other player.}{BARGAIN}{3}{-1} +\stance{\say{PEACEKEEPING}}{\brg{}: take all the \act{} cards of the other player.}{BETRAYAL}{2}{0} +\stance{\say{PEACEKEEPING}}{\brg{}: take all the \act{} cards of the other player.}{BETRAYAL}{2}{0} +\stance{CAMERADERIE}{}{BARGAIN}{4}{-2} \stance{CAMERADERIE}{}{BARGAIN}{4}{-2} \stance{BITTER TASTE}{The other player must also redraw all their \brg{} cards at the beginning of the next round.}{BETRAYAL}{2}{0} +\stance{BITTER TASTE}{The other player must also redraw all their \brg{} cards at the beginning of the next round.}{BETRAYAL}{2}{0} +\stance{LOVE-TACKLE}{If a player reveals this card during the game, it is flipped face-up, and they must give you all their \act{} cards.}{BARGAIN}{3}{-1} \stance{LOVE-TACKLE}{If a player reveals this card during the game, it is flipped face-up, and they must give you all their \act{} cards.}{BARGAIN}{3}{-1} \stance{THROWN to the LAMPREYS}{This card must be played face-up and cannot be moved or interacted with. The player this card is played against must immediately play 2 of their \stn{} cards.}{BETRAYAL}{0}{0} +\stance{THROWN to the LAMPREYS}{This card must be played face-up and cannot be moved or interacted with. The player this card is played against must immediately play 2 of their \stn{} cards.}{BETRAYAL}{0}{0} +\stance{QUISLING}{\brg{}: both players gain an additional 2 \pnts{}.}{BETRAYAL}{2}{0} \stance{QUISLING}{\brg{}: both players gain an additional 2 \pnts{}.}{BETRAYAL}{2}{0} \stance{TRUE LOVE}{If this card is \brgbrg{} with another \textbf{True Love}, you do not lose any base \pnts{} from \brgbtr{} in this round.}{BARGAIN}{3}{-3} \stance{TRUE LOVE}{If this card is \brgbrg{} with another \textbf{True Love}, you do not lose any base \pnts{} from \brgbtr{} in this round.}{BARGAIN}{3}{-3} +\stance{TRUE LOVE}{If this card is \brgbrg{} with another \textbf{True Love}, you do not lose any base \pnts{} from \brgbtr{} in this round.}{BARGAIN}{3}{-3} +\stance{ZERO SUM}{Completely negate the \pnts{} gained or lost by both players in this interaction.}{BETRAYAL}{0}{0} \stance{ZERO SUM}{Completely negate the \pnts{} gained or lost by both players in this interaction.}{BETRAYAL}{0}{0} \stance{SONNET}{If this is played \brgbtr{}, you may sing a song to avoid losing \pnts{}.}{BARGAIN}{3}{-1} +\stance{SONNET}{If this is played \brgbtr{}, you may sing a song to avoid losing \pnts{}.}{BARGAIN}{3}{-1} +\stance{HOSTILE TAKEOVER}{Gain 1 \pnt{} for every \brg{} you have played.}{BETRAYAL}{-1}{-1} \stance{HOSTILE TAKEOVER}{Gain 1 \pnt{} for every \brg{} you have played.}{BETRAYAL}{-1}{-1} \stance{the SUBLIME}{}{BARGAIN}{2}{0} +\stance{the SUBLIME}{}{BARGAIN}{2}{0} \stance{NIHILISM}{}{BETRAYAL}{1}{1} +\stance{NIHILISM}{}{BETRAYAL}{1}{1} +\stance{GATEKEEPING}{\btr{}: The other player must reveal themselves if they are a member of the \textbf{Queer Throatslitting Collective}.}{BETRAYAL}{2}{0} +\stance{RATTED OUT}{\btrbrg{}: if either player is a member of the \textbf{League of Inordinate Reprobates}, they must reveal themselves. If both are members, \brg{} loses 3 extra points.}{BETRAYAL}{2}{0} +\stance{CORPSES for ROSES}{\btr{}: If you are a member of the \textbf{Church of the Undying Rose}, you may reveal yourself and gain 4 \pnts{}.}{BARGAIN}{3}{-1} +\stance{BLOOD PRICE}{The other player must reveal all their alliances. If they are in the \textbf{Vengeful Sacrificium}, you lose 2 \pnts{}.}{BETRAYAL}{3}{1} +\stance{JAUNTY TUNE}{If either player is a member of \textbf{Ye Brothers Merry}, they may reveal themselves and gain 1 \pnt{}.}{BARGAIN}{3}{-1} % FINALS \final{ENTROPY}{Cancel the effects of all \fin{} cards this round.}{0} diff --git a/main.go b/main.go index f3c76da..afe46a2 100644 --- a/main.go +++ b/main.go @@ -13,6 +13,11 @@ type Card struct { Copies int } +type Sigil struct { + Card + Initials map[string]string +} + type Action struct { Card Instant map[string]string @@ -39,9 +44,40 @@ type Final struct { func main() { lang := os.Args[1] + si, _ := os.Open("cards/sigils.json") + defer si.Close() + dec := json.NewDecoder(si) + sigils := []Sigil{} + if err := dec.Decode(&sigils); err != nil { + panic(err) + } + + fmt.Print("\n% SIGILS\n") + + for _, sig := range sigils { + name, ex := sig.Name[lang] + if !ex { + panic(fmt.Sprintf("No '%v' language Name for card %v", lang, sig)) + } + + desc, ex := sig.Description[lang] + if !ex { + panic(fmt.Sprintf("No '%v' language Description for action card %v", lang, sig)) + } + + init, ex := sig.Initials[lang] + if !ex { + panic(fmt.Sprintf("No '%v' language Initials for action card %v", lang, sig)) + } + + for i := 0; i < sig.Copies; i++ { + fmt.Printf("\\sigil{%v}{%v}{%v}\n", name, desc, init) + } + } + a, _ := os.Open("cards/actions.json") defer a.Close() - dec := json.NewDecoder(a) + dec = json.NewDecoder(a) actions := []Action{} if err := dec.Decode(&actions); err != nil { panic(err)