Initial commit

This commit is contained in:
Quintine committed 2026-09-08 07:37:52 +10:00
commit 8c709fb52f
771 files changed
+222983

No files matched your search

+165
View File
@@ -0,0 +1,165 @@
export type FactionId =
| 'atreides'
| 'harkonnen'
| 'emperor'
| 'fremen'
| 'guild'
| 'beneGesserit'
| 'ixians'
| 'tleilaxu'
| 'choam'
| 'richese'
| 'ecaz'
| 'moritani';
export const EXPANSIONS = [
{ id: 'ix', name: 'Ixians & Tleilaxu', year: '2020' },
{ id: 'choam', name: 'CHOAM & Richese', year: '2022' },
{ id: 'ecaz', name: 'Ecaz & Moritani', year: '2023' },
] as const;
export const FACTIONS = [
{
id: 'atreides',
name: 'Atreides',
title: 'The power of prescience',
color: '#65b38b',
sigil: 'A',
spice: 10,
revival: 2,
expansion: 'base',
description: 'Read the auction. Anticipate the enemy. Claim Arrakis.',
},
{
id: 'harkonnen',
name: 'Harkonnen',
title: 'Treachery without limit',
color: '#db7466',
sigil: 'H',
spice: 10,
revival: 2,
expansion: 'base',
description: 'Hold four traitors and a larger arsenal of treachery.',
},
{
id: 'emperor',
name: 'Emperor',
title: 'Wealth of the Imperium',
color: '#b792d5',
sigil: 'E',
spice: 10,
revival: 1,
expansion: 'base',
description: 'The great houses pay you for their auction victories.',
},
{
id: 'fremen',
name: 'Fremen',
title: 'The desert is your home',
color: '#dfc073',
sigil: 'F',
spice: 3,
revival: 3,
expansion: 'base',
description: 'Travel the desert freely and endure the sandworms.',
},
{
id: 'guild',
name: 'Spacing Guild',
title: 'All paths lead through you',
color: '#e69d61',
sigil: 'G',
spice: 5,
revival: 1,
expansion: 'base',
description:
'Collect shipping payments and transport forces at half price.',
},
{
id: 'beneGesserit',
name: 'Bene Gesserit',
title: 'Plans within plans',
color: '#7baed9',
sigil: 'B',
spice: 5,
revival: 1,
expansion: 'base',
description: 'Predict the winner and use the Voice to shape battles.',
},
{
id: 'ixians',
name: 'Ixians',
title: 'Masters of invention',
color: '#99bbbf',
sigil: 'I',
spice: 10,
revival: 1,
expansion: 'ix',
description: 'Command cyborgs and a hidden mobile stronghold.',
},
{
id: 'tleilaxu',
name: 'Tleilaxu',
title: 'Death is only a beginning',
color: '#aca1ca',
sigil: 'T',
spice: 5,
revival: 2,
expansion: 'ix',
description: 'Control revival and replace enemies with face dancers.',
},
{
id: 'choam',
name: 'CHOAM',
title: 'An empire of commerce',
color: '#d6a985',
sigil: 'C',
spice: 2,
revival: 0,
expansion: 'choam',
description: 'Manipulate the economy through charity and the spice market.',
},
{
id: 'richese',
name: 'Richese',
title: 'The unseen advantage',
color: '#a1b5d9',
sigil: 'R',
spice: 5,
revival: 2,
expansion: 'choam',
description: 'Sell unique technology and conceal your troop strength.',
},
{
id: 'ecaz',
name: 'Ecaz',
title: 'The art of diplomacy',
color: '#93bf76',
sigil: 'E',
spice: 12,
revival: 2,
expansion: 'ecaz',
description: 'Place ambassadors and build powerful alliances.',
},
{
id: 'moritani',
name: 'Moritani',
title: 'Fear is a weapon',
color: '#d486a1',
sigil: 'M',
spice: 12,
revival: 2,
expansion: 'ecaz',
description: 'Spread terror and assassinate your rivals’ leaders.',
},
] as const;
export const faction = (id: string) => FACTIONS.find((f) => f.id === id)!;
export const PHASES = [
'Storm',
'Spice blow',
'CHOAM charity',
'Bidding',
'Revival',
'Shipment & movement',
'Battle',
'Spice collection',
'Mentat pause',
];