select card style

This commit is contained in:
Gavin McDonald
2025-04-18 14:16:31 -04:00
parent 40cc0f3ab8
commit e71aa5ad01
228 changed files with 143 additions and 65 deletions

View File

@@ -3,6 +3,7 @@
import ToolTip from '@/components/ToolTip'; import ToolTip from '@/components/ToolTip';
import tarokkaCards from '@/constants/tarokkaCards'; import tarokkaCards from '@/constants/tarokkaCards';
import getCardInfo from '@/tools/getCardInfo'; import getCardInfo from '@/tools/getCardInfo';
import getURL from '@/tools/getURL';
import { Layout, Settings, TarokkaGameCard } from '@/types'; import { Layout, Settings, TarokkaGameCard } from '@/types';
@@ -17,7 +18,7 @@ type CardProps = {
}; };
export default function Card({ dm, card, position, settings, flipAction }: CardProps) { export default function Card({ dm, card, position, settings, flipAction }: CardProps) {
const { aria, flipped, url } = card; const { aria, flipped } = card;
const handleClick = () => { const handleClick = () => {
if (dm) { if (dm) {
@@ -50,10 +51,18 @@ export default function Card({ dm, card, position, settings, flipAction }: CardP
className={`transition-transform duration-500 transform-style-preserve-3d ${flipped ? 'rotate-y-180' : ''}`} className={`transition-transform duration-500 transform-style-preserve-3d ${flipped ? 'rotate-y-180' : ''}`}
> >
<div className="absolute group inset-0 backface-hidden"> <div className="absolute group inset-0 backface-hidden">
<img src={cardBack.url} alt="Card Back" className="rounded-lg border border-gray-500" /> <img
src={getURL(cardBack as TarokkaGameCard, settings)}
alt="Card Back"
className="rounded-lg border border-gray-600"
/>
</div> </div>
<div className="absolute group inset-0 backface-hidden rotate-y-180"> <div className="absolute group inset-0 backface-hidden rotate-y-180">
<img src={url} alt={aria} className="rounded-xl rounded border border-gray-500 " /> <img
src={getURL(card, settings)}
alt={aria}
className="rounded-lg border border-gray-600 "
/>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -5,13 +5,15 @@ import { Settings as Gear, X } from 'lucide-react';
import CopyButton from '@/components/CopyButton'; import CopyButton from '@/components/CopyButton';
import Switch from '@/components/Switch'; import Switch from '@/components/Switch';
import { GameUpdate } from '@/types'; import { CardStyle, GameUpdate } from '@/types';
type PermissionTogglePanelProps = { type PermissionTogglePanelProps = {
gameData: GameUpdate; gameData: GameUpdate;
changeAction: (updatedSettings: GameUpdate) => void; changeAction: (updatedSettings: GameUpdate) => void;
}; };
const cardStyleOptions: CardStyle[] = ['standard', 'color', 'grayscale'];
export default function PermissionTogglePanel({ export default function PermissionTogglePanel({
gameData, gameData,
changeAction, changeAction,
@@ -28,6 +30,16 @@ export default function PermissionTogglePanel({
}); });
}; };
const tuneRadio = (cardStyle: CardStyle) => {
changeAction({
...gameData,
settings: {
...gameData.settings,
cardStyle,
},
});
};
return ( return (
<div className="fixed top-4 right-4 z-50"> <div className="fixed top-4 right-4 z-50">
{!open && ( {!open && (
@@ -49,9 +61,38 @@ export default function PermissionTogglePanel({
</button> </button>
<CopyButton title="DM link" copy={`${location.origin}/${gameData.dmID}`} /> <CopyButton title="DM link" copy={`${location.origin}/${gameData.dmID}`} />
<CopyButton title="Spectator link" copy={`${location.origin}/${gameData.spectatorID}`} /> <CopyButton title="Spectator link" copy={`${location.origin}/${gameData.spectatorID}`} />
{Object.entries(gameData.settings).map(([key, value]) => ( {Object.entries(gameData.settings)
<Switch label={key} value={value} toggleAction={() => togglePermission(key)} /> .filter(([_key, value]) => typeof value === 'boolean')
))} .map(([key, value]) => (
<Switch label={key} value={value} toggleAction={() => togglePermission(key)} />
))}
<fieldset className="flex flex-col">
<div className="text-xs text-gray-400 mb-1">Card style:</div>
<div className="inline-flex overflow-hidden rounded-md w-full">
{cardStyleOptions.map((option, index) => (
<label
key={option}
className={`cursor-pointer px-4 py-2 text-sm font-medium transition
${gameData.settings.cardStyle === option ? 'bg-gray-500 text-white' : 'bg-gray-800 text-gray-300 hover:bg-gray-700'}
${index === 0 ? 'rounded-l-md' : ''}
${index === cardStyleOptions.length - 1 ? 'rounded-r-md' : ''}
${index !== 0 && 'border-l border-gray-600'}
border border-gray-600
`}
>
<input
type="radio"
name="cardStyle"
value={option}
checked={gameData.settings.cardStyle === option}
onChange={() => tuneRadio(option)}
className="sr-only"
/>
{option}
</label>
))}
</div>
</fieldset>
</div> </div>
)} )}
</div> </div>

View File

@@ -45,3 +45,76 @@ export const layout: Layout[] = [
text: 'Your enemy is a creature of darkness, whose powers are beyond mortality. This card will lead you to him!', text: 'Your enemy is a creature of darkness, whose powers are beyond mortality. This card will lead you to him!',
}, },
]; ];
export const cardStyles = {
color: {
baseURL: '/img/color/',
extension: '.webp',
},
grayscale: {
baseURL: '/img/grayscale/',
extension: '.webp',
},
standard: {
baseURL: '/img/standard/',
extension: '.svg',
},
};
export const standardMap = {
abjurer: '4C',
anarchist: '6H',
artifact: '1J',
avenger: 'AS',
back: '1B',
beast: 'JD',
beggar: '6D',
berserker: '6S',
bishop: '8H',
'broken-one': 'KD',
charlatan: '7H',
conjurer: '9C',
darklord: 'KS',
dictator: '8S',
diviner: '2C',
donjon: 'KC',
druid: '5H',
elementalist: '5C',
enchanter: '3C',
evoker: '6C',
executioner: 'JS',
ghost: 'KH',
'guild-member': '5D',
healer: '3H',
'hooded-one': '7S',
horseman: '2J',
illusionist: '7C',
innocent: 'QH',
marionette: 'JH',
mercenary: '4S',
merchant: '4D',
miser: '9D',
missionary: '2H',
mists: 'QS',
monk: 'AH',
myrmidon: '5S',
necromancer: '8C',
paladin: '2S',
philanthropist: '2D',
priest: '10H',
raven: 'QC',
rogue: '10D',
seer: 'JC',
shepherd: '4H',
soldier: '3S',
swashbuckler: 'AD',
'tax-collector': '8D',
tempter: 'QD',
thief: '7D',
torturer: '9S',
trader: '3D',
traitor: '9H',
transmuter: 'AC',
warrior: '10S',
wizard: '10C',
};

View File

@@ -8,7 +8,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: null, suit: null,
aria: 'Back of card', aria: 'Back of card',
description: 'Back of card', description: 'Back of card',
url: '/img/tarokka/Back.jpg',
back: true, back: true,
}, },
{ {
@@ -18,7 +17,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Coins', suit: 'Coins',
aria: 'Coins 01 Swashbuckler', aria: 'Coins 01 Swashbuckler',
description: 'Those who like money yet give it up freely; likable rogues and rapscallions', description: 'Those who like money yet give it up freely; likable rogues and rapscallions',
url: '/img/tarokka/Coins_01_Swashbuckler.jpeg',
back: false, back: false,
value: 1, value: 1,
prophecy: { prophecy: {
@@ -36,7 +34,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Coins 02 Philanthropist', aria: 'Coins 02 Philanthropist',
description: description:
'Charity and giving on a grand scale; those who use wealth to fight evil and sickness', 'Charity and giving on a grand scale; those who use wealth to fight evil and sickness',
url: '/img/tarokka/Coins_02_Philanthropist.jpeg',
back: false, back: false,
value: 2, value: 2,
prophecy: { prophecy: {
@@ -53,7 +50,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Coins', suit: 'Coins',
aria: 'Coins 03 Trader', aria: 'Coins 03 Trader',
description: 'Commerce; smuggling and black markets; fair and equitable trades', description: 'Commerce; smuggling and black markets; fair and equitable trades',
url: '/img/tarokka/Coins_03_Trader.jpeg',
back: false, back: false,
value: 3, value: 3,
prophecy: { prophecy: {
@@ -71,7 +67,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Coins 04 Merchant', aria: 'Coins 04 Merchant',
description: description:
'A rare commodity or business opportunity; deceitful or dangerous business transactions', 'A rare commodity or business opportunity; deceitful or dangerous business transactions',
url: '/img/tarokka/Coins_04_Merchant.jpeg',
back: false, back: false,
value: 4, value: 4,
prophecy: { prophecy: {
@@ -87,7 +82,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Coins', suit: 'Coins',
aria: 'Coins 05 Guild Member', aria: 'Coins 05 Guild Member',
description: "Like-minded individuals joined together in a common goal; pride in one's work", description: "Like-minded individuals joined together in a common goal; pride in one's work",
url: '/img/tarokka/Coins_05_GuildMember.jpeg',
back: false, back: false,
value: 5, value: 5,
prophecy: { prophecy: {
@@ -103,7 +97,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Coins', suit: 'Coins',
aria: 'Coins 06 Beggar', aria: 'Coins 06 Beggar',
description: 'Sudden change in economic status or fortune', description: 'Sudden change in economic status or fortune',
url: '/img/tarokka/Coins_06_Beggar.jpeg',
back: false, back: false,
value: 6, value: 6,
prophecy: { prophecy: {
@@ -121,7 +114,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Coins 07 Thief', aria: 'Coins 07 Thief',
description: description:
'Those who steal or burgle; a loss of property, beauty, innocence, friendship, or reputation', 'Those who steal or burgle; a loss of property, beauty, innocence, friendship, or reputation',
url: '/img/tarokka/Coins_07_Thief.jpeg',
back: false, back: false,
value: 7, value: 7,
prophecy: { prophecy: {
@@ -138,7 +130,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Coins', suit: 'Coins',
aria: 'Coins 08 Tax Collector', aria: 'Coins 08 Tax Collector',
description: 'Corruption; honesty in an otherwise corrupt government or organization', description: 'Corruption; honesty in an otherwise corrupt government or organization',
url: '/img/tarokka/Coins_08_TaxCollector.png',
back: false, back: false,
value: 8, value: 8,
prophecy: { prophecy: {
@@ -157,7 +148,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Coins 09 Miser', aria: 'Coins 09 Miser',
description: description:
'Hoarded wealth; those who are irreversibly unhappy or who think money is meaningless', 'Hoarded wealth; those who are irreversibly unhappy or who think money is meaningless',
url: '/img/tarokka/Coins_09_Miser.jpeg',
back: false, back: false,
value: 9, value: 9,
prophecy: { prophecy: {
@@ -174,7 +164,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Coins 10 Rogue', aria: 'Coins 10 Rogue',
description: description:
'Anyone for whom money is important; those who believe money is the key to their success', 'Anyone for whom money is important; those who believe money is the key to their success',
url: '/img/tarokka/Coins_10_Rogue.jpeg',
back: false, back: false,
value: 10, value: 10,
prophecy: { prophecy: {
@@ -191,7 +180,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Glyphs 01 Monk', aria: 'Glyphs 01 Monk',
description: description:
'Serenity; inner strength and self-reliance; supreme confidence bereft of arrogance', 'Serenity; inner strength and self-reliance; supreme confidence bereft of arrogance',
url: '/img/tarokka/Glyphs_01_Monk.jpeg',
back: false, back: false,
value: 1, value: 1,
prophecy: { prophecy: {
@@ -209,7 +197,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Glyphs 02 Missionary', aria: 'Glyphs 02 Missionary',
description: description:
'Those who spread wisdom and faith to others; warnings of the spread of fear and ignorance', 'Those who spread wisdom and faith to others; warnings of the spread of fear and ignorance',
url: '/img/tarokka/Glyphs_02_Missionary.jpeg',
back: false, back: false,
value: 2, value: 2,
prophecy: { prophecy: {
@@ -228,7 +215,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Glyphs 03 Healer', aria: 'Glyphs 03 Healer',
description: description:
'Healing; a contagious illness, disease, or curse; those who practice the healing arts', 'Healing; a contagious illness, disease, or curse; those who practice the healing arts',
url: '/img/tarokka/Glyphs_03_Healer.jpeg',
back: false, back: false,
value: 3, value: 3,
prophecy: { prophecy: {
@@ -246,7 +232,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Glyphs 04 Shepherd', aria: 'Glyphs 04 Shepherd',
description: description:
'Those who protect others; one who bears a burden far too great to be shouldered alone', 'Those who protect others; one who bears a burden far too great to be shouldered alone',
url: '/img/tarokka/Glyphs_04_Shepherd.jpeg',
back: false, back: false,
value: 4, value: 4,
prophecy: { prophecy: {
@@ -264,7 +249,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Glyphs 05 Druid', aria: 'Glyphs 05 Druid',
description: description:
'The ambivalence and cruelty of nature and those who feel drawn to it; inner turmoil', 'The ambivalence and cruelty of nature and those who feel drawn to it; inner turmoil',
url: '/img/tarokka/Glyphs_05_Druid.jpeg',
back: false, back: false,
value: 5, value: 5,
prophecy: { prophecy: {
@@ -282,7 +266,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Glyphs', suit: 'Glyphs',
aria: 'Glyphs 06 Anarchist', aria: 'Glyphs 06 Anarchist',
description: 'A fundamental change brought on by one whose beliefs are being put to the test', description: 'A fundamental change brought on by one whose beliefs are being put to the test',
url: '/img/tarokka/Glyphs_06_Anarchist.jpeg',
back: false, back: false,
value: 6, value: 6,
prophecy: { prophecy: {
@@ -299,7 +282,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Glyphs', suit: 'Glyphs',
aria: 'Glyphs 07 Charlatan', aria: 'Glyphs 07 Charlatan',
description: 'Liars; those who profess to believe one thing but actually believe another', description: 'Liars; those who profess to believe one thing but actually believe another',
url: '/img/tarokka/Glyphs_07_Charlatan.jpeg',
back: false, back: false,
value: 7, value: 7,
prophecy: { prophecy: {
@@ -315,7 +297,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Glyphs', suit: 'Glyphs',
aria: 'Glyphs 08 Bishop', aria: 'Glyphs 08 Bishop',
description: 'Strict adherence to a code or a belief; those who plot, plan, and scheme', description: 'Strict adherence to a code or a belief; those who plot, plan, and scheme',
url: '/img/tarokka/Glyphs_08_Bishop.jpeg',
back: false, back: false,
value: 8, value: 8,
prophecy: { prophecy: {
@@ -332,7 +313,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Glyphs', suit: 'Glyphs',
aria: 'Glyphs 09 Traitor', aria: 'Glyphs 09 Traitor',
description: 'Betrayal by someone close and trusted; a weakening or loss of faith', description: 'Betrayal by someone close and trusted; a weakening or loss of faith',
url: '/img/tarokka/Glyphs_09_Traitor.jpeg',
back: false, back: false,
value: 9, value: 9,
prophecy: { prophecy: {
@@ -350,7 +330,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Glyphs', suit: 'Glyphs',
aria: 'Glyphs 10 Priest', aria: 'Glyphs 10 Priest',
description: 'Enlightenment; those who follow a deity, a system of values, or a higher purpose', description: 'Enlightenment; those who follow a deity, a system of values, or a higher purpose',
url: '/img/tarokka/Glyphs_10_Priest.jpeg',
back: false, back: false,
value: 10, value: 10,
prophecy: { prophecy: {
@@ -368,7 +347,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Stars 01 Transmuter', aria: 'Stars 01 Transmuter',
description: description:
'A new discovery; the coming of unexpected things; unforeseen consequences and chaos', 'A new discovery; the coming of unexpected things; unforeseen consequences and chaos',
url: '/img/tarokka/Stars_01_Transmuter.jpeg',
back: false, back: false,
value: 1, value: 1,
prophecy: { prophecy: {
@@ -385,7 +363,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Stars 02 Diviner', aria: 'Stars 02 Diviner',
description: description:
'The pursuit of knowledge tempered by wisdom; truth and honesty; sages and prophecy', 'The pursuit of knowledge tempered by wisdom; truth and honesty; sages and prophecy',
url: '/img/tarokka/Stars_02_Diviner.jpeg',
back: false, back: false,
value: 2, value: 2,
prophecy: { prophecy: {
@@ -402,7 +379,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Stars', suit: 'Stars',
aria: 'Stars 03 Enchanter', aria: 'Stars 03 Enchanter',
description: 'Inner turmoil that comes from confusion, fear of failure, or false information', description: 'Inner turmoil that comes from confusion, fear of failure, or false information',
url: '/img/tarokka/Stars_03_Enchanter.png',
back: false, back: false,
value: 3, value: 3,
prophecy: { prophecy: {
@@ -421,7 +397,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Stars 04 Abjurer', aria: 'Stars 04 Abjurer',
description: description:
'Those guided by logic and reasoning; warns of an overlooked clue or piece of information', 'Those guided by logic and reasoning; warns of an overlooked clue or piece of information',
url: '/img/tarokka/Stars_04_Abjurer.jpeg',
back: false, back: false,
value: 4, value: 4,
prophecy: { prophecy: {
@@ -439,7 +414,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Stars 05 Elementalist', aria: 'Stars 05 Elementalist',
description: description:
'The triumph of nature over civilization; natural disasters and bountiful harvests', 'The triumph of nature over civilization; natural disasters and bountiful harvests',
url: '/img/tarokka/Stars_05_Elementalist.jpeg',
back: false, back: false,
value: 5, value: 5,
prophecy: { prophecy: {
@@ -458,7 +432,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Stars 06 Evoker', aria: 'Stars 06 Evoker',
description: description:
"Magical or supernatural power that can't be controlled; magic for destructive ends", "Magical or supernatural power that can't be controlled; magic for destructive ends",
url: '/img/tarokka/Stars_06_Evoker.jpeg',
back: false, back: false,
value: 6, value: 6,
prophecy: { prophecy: {
@@ -476,7 +449,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Stars 07 Illusionist', aria: 'Stars 07 Illusionist',
description: description:
'Lies and deceit; grand conspiracies; secret societies; the presence of a dupe or a saboteur', 'Lies and deceit; grand conspiracies; secret societies; the presence of a dupe or a saboteur',
url: '/img/tarokka/Stars_07_Illusionist.jpeg',
back: false, back: false,
value: 7, value: 7,
prophecy: { prophecy: {
@@ -493,7 +465,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Stars', suit: 'Stars',
aria: 'Stars 08 Necromancer', aria: 'Stars 08 Necromancer',
description: 'Unnatural events and unhealthy obsessions; those who follow a destructive path', description: 'Unnatural events and unhealthy obsessions; those who follow a destructive path',
url: '/img/tarokka/Stars_08_Necromancer.jpeg',
back: false, back: false,
value: 8, value: 8,
prophecy: { prophecy: {
@@ -510,7 +481,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Stars 09 Conjurer', aria: 'Stars 09 Conjurer',
description: description:
'The coming of an unexpected supernatural threat; those who think of themselves as gods', 'The coming of an unexpected supernatural threat; those who think of themselves as gods',
url: '/img/tarokka/Stars_09_Conjurer.jpeg',
back: false, back: false,
value: 9, value: 9,
prophecy: { prophecy: {
@@ -528,7 +498,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Stars 10 Wizard', aria: 'Stars 10 Wizard',
description: description:
'Mystery and riddles; the unknown; those who crave magical power and great knowledge', 'Mystery and riddles; the unknown; those who crave magical power and great knowledge',
url: '/img/tarokka/Stars_10_Wizard.jpeg',
back: false, back: false,
value: 10, value: 10,
prophecy: { prophecy: {
@@ -546,7 +515,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Swords 01 Avenger', aria: 'Swords 01 Avenger',
description: description:
'Justice and revenge for great wrongs; those on a quest to rid the world of great evil', 'Justice and revenge for great wrongs; those on a quest to rid the world of great evil',
url: '/img/tarokka/Swords_01_Avenger.jpeg',
back: false, back: false,
value: 1, value: 1,
prophecy: { prophecy: {
@@ -563,7 +531,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Swords', suit: 'Swords',
aria: 'Swords 02 Paladin', aria: 'Swords 02 Paladin',
description: 'Just and noble warriors; those who live by a code of honor and integrity', description: 'Just and noble warriors; those who live by a code of honor and integrity',
url: '/img/tarokka/Swords_02_Paladin.jpeg',
back: false, back: false,
value: 2, value: 2,
prophecy: { prophecy: {
@@ -580,7 +547,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Swords', suit: 'Swords',
aria: 'Swords 03 Soldier', aria: 'Swords 03 Soldier',
description: 'War and sacrifice; the stamina to endure great hardship', description: 'War and sacrifice; the stamina to endure great hardship',
url: '/img/tarokka/Swords_03_Soldier.jpeg',
back: false, back: false,
value: 3, value: 3,
prophecy: { prophecy: {
@@ -597,9 +563,8 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Swords', suit: 'Swords',
aria: 'Swords 04 Mercenary', aria: 'Swords 04 Mercenary',
description: 'Inner strength and fortitude; those who fight for power or wealth', description: 'Inner strength and fortitude; those who fight for power or wealth',
url: '/img/tarokka/Swords_04_Mercenary.jpeg',
back: false, back: false,
value: 1, value: 4,
prophecy: { prophecy: {
dmText: 'The treasure lies in a crypt in Castle Ravenloft (chapter 4, area K84, crypt 31).', dmText: 'The treasure lies in a crypt in Castle Ravenloft (chapter 4, area K84, crypt 31).',
location: 'Castle Ravenloft', location: 'Castle Ravenloft',
@@ -614,7 +579,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Swords 05 Myrmidon', aria: 'Swords 05 Myrmidon',
description: description:
'Great heroes; a sudden reversal of fate; the triumph of the underdog over a mighty enemy', 'Great heroes; a sudden reversal of fate; the triumph of the underdog over a mighty enemy',
url: '/img/tarokka/Swords_05_Myrmidon.jpeg',
back: false, back: false,
value: 5, value: 5,
prophecy: { prophecy: {
@@ -632,7 +596,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Swords', suit: 'Swords',
aria: 'Swords 06 Berserker', aria: 'Swords 06 Berserker',
description: 'The brutal and barbaric side of warfare; bloodlust; those with a bestial nature', description: 'The brutal and barbaric side of warfare; bloodlust; those with a bestial nature',
url: '/img/tarokka/Swords_06_Berserker.jpeg',
back: false, back: false,
value: 6, value: 6,
prophecy: { prophecy: {
@@ -650,7 +613,6 @@ const tarokkaCards: TarokkaCard[] = [
suit: 'Swords', suit: 'Swords',
aria: 'Swords 07 Hooded One', aria: 'Swords 07 Hooded One',
description: 'Bigotry, intolerance, and xenophobia; a mysterious presence or newcomer', description: 'Bigotry, intolerance, and xenophobia; a mysterious presence or newcomer',
url: '/img/tarokka/Swords_07_HoodedOne.jpeg',
back: false, back: false,
value: 7, value: 7,
prophecy: { prophecy: {
@@ -669,7 +631,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Swords 08 Dictator', aria: 'Swords 08 Dictator',
description: description:
'All that is wrong with government and leadership; those who rule through fear and violence', 'All that is wrong with government and leadership; those who rule through fear and violence',
url: '/img/tarokka/Swords_08_Dictator.jpeg',
back: false, back: false,
value: 8, value: 8,
prophecy: { prophecy: {
@@ -686,7 +647,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Swords 09 Torturer', aria: 'Swords 09 Torturer',
description: description:
'The coming of suffering or merciless cruelty; one who is irredeemably evil or sadistic', 'The coming of suffering or merciless cruelty; one who is irredeemably evil or sadistic',
url: '/img/tarokka/Swords_09_Torturer.jpeg',
back: false, back: false,
value: 9, value: 9,
prophecy: { prophecy: {
@@ -705,7 +665,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'Swords 10 Warrior', aria: 'Swords 10 Warrior',
description: description:
'Strength and force personified; violence; those who use force to accomplish their goals', 'Strength and force personified; violence; those who use force to accomplish their goals',
url: '/img/tarokka/Swords_10_Warrior.jpeg',
back: false, back: false,
value: 10, value: 10,
prophecy: { prophecy: {
@@ -723,7 +682,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Artifact', aria: 'High Deck Artifact',
description: description:
'The importance of some physical object that must be obtained, protected, or destroyed at all costs', 'The importance of some physical object that must be obtained, protected, or destroyed at all costs',
url: '/img/tarokka/Crowns_Artifact.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -748,7 +706,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Beast', aria: 'High Deck Beast',
description: description:
'Great rage or passion; something bestial or malevolent hiding in plain sight or lurking just below the surface', 'Great rage or passion; something bestial or malevolent hiding in plain sight or lurking just below the surface',
url: '/img/tarokka/Crowns_Beast.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -774,7 +731,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Broken One', aria: 'High Deck Broken One',
description: description:
'Defeat, failure, and despair; the loss of something or someone important, without which one feels incomplete', 'Defeat, failure, and despair; the loss of something or someone important, without which one feels incomplete',
url: '/img/tarokka/Crowns_BrokenOne.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -806,7 +762,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Darklord', aria: 'High Deck Darklord',
description: description:
'A single, powerful individual of an evil nature, one whose goals have enormous and far-reaching consequences', 'A single, powerful individual of an evil nature, one whose goals have enormous and far-reaching consequences',
url: '/img/tarokka/Crowns_Darklord.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -830,7 +785,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Donjon', aria: 'High Deck Donjon',
description: description:
"Isolation and imprisonment; being so conservative in thinking as to be a prisoner of one's own beliefs", "Isolation and imprisonment; being so conservative in thinking as to be a prisoner of one's own beliefs",
url: '/img/tarokka/Crowns_Donjon.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -863,7 +817,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Executioner', aria: 'High Deck Executioner',
description: description:
'The imminent death of one rightly or wrongly convicted of a crime; false accusations and unjust prosecution', 'The imminent death of one rightly or wrongly convicted of a crime; false accusations and unjust prosecution',
url: '/img/tarokka/Crowns_Executioner.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -890,7 +843,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Ghost', aria: 'High Deck Ghost',
description: description:
'The looming past; the return of an old enemy or the discovery of a secret buried long ago', 'The looming past; the return of an old enemy or the discovery of a secret buried long ago',
url: '/img/tarokka/Crowns_Ghost.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -924,7 +876,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Horseman', aria: 'High Deck Horseman',
description: description:
'Death; disaster in the form of the loss of wealth or property, a horrible defeat, or the end of a bloodline', 'Death; disaster in the form of the loss of wealth or property, a horrible defeat, or the end of a bloodline',
url: '/img/tarokka/Crowns_Horseman.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -957,7 +908,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Innocent', aria: 'High Deck Innocent',
description: description:
'A being of great importance whose life is in danger (who might be helpless or simply unaware of the peril)', 'A being of great importance whose life is in danger (who might be helpless or simply unaware of the peril)',
url: '/img/tarokka/Crowns_Innocent.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -990,7 +940,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Marionette', aria: 'High Deck Marionette',
description: description:
'The presence of a spy or a minion of some greater power; an encounter with a puppet or an underling', 'The presence of a spy or a minion of some greater power; an encounter with a puppet or an underling',
url: '/img/tarokka/Crowns_Marionette.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -1022,7 +971,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Mists', aria: 'High Deck Mists',
description: description:
"Something unexpected or mysterious that can't be avoided; a great quest or journey that will try one's spirit", "Something unexpected or mysterious that can't be avoided; a great quest or journey that will try one's spirit",
url: '/img/tarokka/Crowns_Mists.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -1049,7 +997,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Raven', aria: 'High Deck Raven',
description: description:
'A hidden source of information; a fortunate turn of events; a secret potential for good', 'A hidden source of information; a fortunate turn of events; a secret potential for good',
url: '/img/tarokka/Crowns_Raven.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -1076,7 +1023,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Seer', aria: 'High Deck Seer',
description: description:
'Inspiration and keen intellect; a future event, the outcome of which will hinge on a clever mind', 'Inspiration and keen intellect; a future event, the outcome of which will hinge on a clever mind',
url: '/img/tarokka/Crowns_Seer.jpeg',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [
@@ -1103,7 +1049,6 @@ const tarokkaCards: TarokkaCard[] = [
aria: 'High Deck Tempter', aria: 'High Deck Tempter',
description: description:
'One who has been compromised or led astray by temptation or foolishness; one who tempts others for evil ends', 'One who has been compromised or led astray by temptation or foolishness; one who tempts others for evil ends',
url: '/img/tarokka/Crowns_Tempter.png',
back: false, back: false,
prophecy: { prophecy: {
allies: [ allies: [

View File

@@ -46,6 +46,7 @@ export default class GameStore {
positionFront: true, positionFront: true,
prophecy: true, prophecy: true,
notes: true, notes: true,
cardStyle: 'standard',
}, },
}; };

Binary file not shown.

Before

Width:  |  Height:  |  Size: 720 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 534 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 445 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

BIN
public/img/color/back.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
public/img/color/beast.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
public/img/color/druid.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
public/img/color/ghost.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
public/img/color/miser.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

BIN
public/img/color/mists.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
public/img/color/monk.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Some files were not shown because too many files have changed in this diff Show More