Files
Dune/game/catalog.ts
T
2026-09-08 07:37:52 +10:00

166 lines
3.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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',
];