99 lines
3.0 KiB
TypeScript
99 lines
3.0 KiB
TypeScript
export const resourceDefs = [
|
|
{ id: 'supplies', name: 'Supplies', startAmount: 10 },
|
|
{ id: 'coin', name: 'Coin', startAmount: 0 },
|
|
];
|
|
|
|
export const actionDefs = [
|
|
{
|
|
id: 'gather_supplies',
|
|
name: 'Gather supplies',
|
|
kind: 'timed',
|
|
group: { id: 'camp', label: 'Camp' },
|
|
durationMs: 3000,
|
|
yields: [{ resourceId: 'supplies', amount: 2 }],
|
|
storyHint: 'Basic camp labor.',
|
|
storyTooltip: 'Yields 2 Supplies. No cost.',
|
|
},
|
|
{
|
|
id: 'scout_path',
|
|
name: 'Scout the path',
|
|
kind: 'timed',
|
|
group: { id: 'travel', label: 'Travel' },
|
|
durationMs: 5000,
|
|
costs: [{ resourceId: 'supplies', amount: 2 }],
|
|
yields: [{ resourceId: 'coin', amount: 1 }],
|
|
storyHint: 'Map the crossing.',
|
|
storyTooltip: 'Costs 2 Supplies. Yields 1 Coin. Triggers scout aftermath story.',
|
|
},
|
|
{
|
|
id: 'trade_supplies',
|
|
name: 'Trade at camp',
|
|
kind: 'timed',
|
|
group: { id: 'camp', label: 'Camp' },
|
|
durationMs: 4000,
|
|
costs: [{ resourceId: 'supplies', amount: 3 }],
|
|
yields: [{ resourceId: 'coin', amount: 2 }],
|
|
unlock: { minResources: { coin: 1 } },
|
|
storyHint: 'Barter with travelers.',
|
|
storyTooltip: 'Costs 3 Supplies. Yields 2 Coin. Unlocks at 1 Coin.',
|
|
},
|
|
{
|
|
id: 'fortify_camp',
|
|
name: 'Fortify camp',
|
|
kind: 'timed',
|
|
group: { id: 'camp', label: 'Camp' },
|
|
durationMs: 8000,
|
|
costs: [
|
|
{ resourceId: 'supplies', amount: 5 },
|
|
{ resourceId: 'coin', amount: 2 },
|
|
],
|
|
yields: [{ resourceId: 'supplies', amount: 4 }],
|
|
unlock: { minResources: { supplies: 8 }, requireStoryFlags: ['route_a'] },
|
|
storyHint: 'Walls for the high road camp.',
|
|
storyTooltip: 'Route A only. Costs supplies and coin.',
|
|
},
|
|
{
|
|
id: 'push_onward',
|
|
name: 'Push onward',
|
|
kind: 'timed',
|
|
group: { id: 'travel', label: 'Travel' },
|
|
durationMs: 6000,
|
|
costs: [{ resourceId: 'supplies', amount: 2 }],
|
|
yields: [{ resourceId: 'coin', amount: 3 }],
|
|
unlock: { requireStoryFlags: ['route_b'] },
|
|
storyHint: 'Follow the river route.',
|
|
storyTooltip: 'Costs 2 Supplies. Yields 3 Coin. Route B only.',
|
|
},
|
|
{
|
|
id: 'rest',
|
|
name: 'Rest briefly',
|
|
kind: 'loop',
|
|
group: { id: 'camp_loop', label: 'Camp activities' },
|
|
loopPriority: 0,
|
|
durationMs: 2000,
|
|
yields: [{ resourceId: 'supplies', amount: 1 }],
|
|
storyHint: 'Catch your breath.',
|
|
storyTooltip: 'Idle upkeep — runs when nothing else is queued.',
|
|
},
|
|
{
|
|
id: 'pick_high_road',
|
|
name: 'Take the high road',
|
|
kind: 'story',
|
|
group: { id: 'fork', label: 'Crossroads' },
|
|
storyChoiceId: 'pick_a',
|
|
storyHint: 'Route A — high ground and supplies.',
|
|
storyTooltip: 'Story fork: grants route A flag and resources. Hides river path.',
|
|
yields: [],
|
|
},
|
|
{
|
|
id: 'follow_river',
|
|
name: 'Follow the river',
|
|
kind: 'story',
|
|
group: { id: 'fork', label: 'Crossroads' },
|
|
storyChoiceId: 'pick_b',
|
|
storyHint: 'Route B — river trade and coin.',
|
|
storyTooltip: 'Story fork: grants route B flag. Hides high road path.',
|
|
yields: [],
|
|
},
|
|
];
|