Add wonder data
This commit is contained in:
parent
e721b8f357
commit
5c621c9394
@ -15,7 +15,7 @@ export type Science = 'engineering' | 'research' | 'education'
|
|||||||
export const sciences: Science[] = ['engineering', 'research', 'education']
|
export const sciences: Science[] = ['engineering', 'research', 'education']
|
||||||
|
|
||||||
export interface TurnPlan {
|
export interface TurnPlan {
|
||||||
action: 'structure' | 'discard'
|
action: 'structure' | 'discard' | 'wonder'
|
||||||
cardIdx: number
|
cardIdx: number
|
||||||
goldLeft: number
|
goldLeft: number
|
||||||
goldRight: number
|
goldRight: number
|
||||||
|
|||||||
@ -5,14 +5,8 @@ export const structureTypes: StructureType[] = ['commerce', 'culture', 'science'
|
|||||||
|
|
||||||
export type Countable = StructureType | 'wonder stage' | 'defeat'
|
export type Countable = StructureType | 'wonder stage' | 'defeat'
|
||||||
|
|
||||||
export interface Structure {
|
export interface Project {
|
||||||
type: StructureType
|
|
||||||
name: string
|
|
||||||
appears?: (undefined | (3 | 4 | 5 | 6 | 7)[])[]
|
|
||||||
|
|
||||||
cost?: Map<Resource | 'gold', number>
|
cost?: Map<Resource | 'gold', number>
|
||||||
freeWith?: string[]
|
|
||||||
paysFor?: string[]
|
|
||||||
|
|
||||||
gold?: number
|
gold?: number
|
||||||
goldPer?: Map<Countable, number>
|
goldPer?: Map<Countable, number>
|
||||||
@ -28,6 +22,19 @@ export interface Structure {
|
|||||||
direction: ('left' | 'right')[]
|
direction: ('left' | 'right')[]
|
||||||
amount: number
|
amount: number
|
||||||
}[]
|
}[]
|
||||||
|
playBothOnLastTurn?: boolean
|
||||||
|
buildDiscardedNow?: boolean
|
||||||
|
copyNeighboringGuild?: boolean
|
||||||
|
ignoreCostOncePerAge?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Structure extends Project {
|
||||||
|
type: StructureType
|
||||||
|
name: string
|
||||||
|
appears?: (undefined | (3 | 4 | 5 | 6 | 7)[])[]
|
||||||
|
|
||||||
|
freeWith?: string[]
|
||||||
|
paysFor?: string[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export const structuresByAge: Structure[][] = [
|
export const structuresByAge: Structure[][] = [
|
||||||
|
|||||||
@ -1,54 +1,125 @@
|
|||||||
import { Resource } from "./basic"
|
import { Resource } from "./basic"
|
||||||
|
import { Project } from "./structure"
|
||||||
|
|
||||||
export interface Wonder {
|
export interface Wonder {
|
||||||
name: string
|
name: string
|
||||||
innateResource: Resource
|
innateResource: Resource
|
||||||
//stages: Structure[]
|
stages: Project[]
|
||||||
}
|
}
|
||||||
|
|
||||||
const wonderList: Wonder[] = [
|
const wonderList: Wonder[] = [
|
||||||
{
|
{
|
||||||
name: 'Great Pyramid of Giza A',
|
name: 'Great Pyramid of Giza A',
|
||||||
innateResource: 'stone'
|
innateResource: 'stone',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['stone', 2]]), points: 3 },
|
||||||
|
{ cost: new Map([['wood', 3]]), points: 5 },
|
||||||
|
{ cost: new Map([['stone', 4]]), points: 7 },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Great Pyramid of Giza B',
|
name: 'Great Pyramid of Giza B',
|
||||||
innateResource: 'stone'
|
innateResource: 'stone',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['wood', 2]]), points: 3 },
|
||||||
|
{ cost: new Map([['stone', 3]]), points: 5 },
|
||||||
|
{ cost: new Map([['brick', 3]]), points: 5 },
|
||||||
|
{ cost: new Map([['paper', 1], ['stone', 4]]), points: 7 },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Hanging Gardens of Babylon A',
|
name: 'Hanging Gardens of Babylon A',
|
||||||
innateResource: 'brick'
|
innateResource: 'brick',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['brick', 2]]), points: 3 },
|
||||||
|
{ cost: new Map([['wood', 3]]), sciences: new Set(['engineering', 'research', 'education']) },
|
||||||
|
{ cost: new Map([['brick', 4]]), points: 7 },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Hanging Gardens of Babylon B',
|
name: 'Hanging Gardens of Babylon B',
|
||||||
innateResource: 'brick'
|
innateResource: 'brick',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['cloth', 1], ['brick', 1]]), points: 3 },
|
||||||
|
{ cost: new Map([['glass', 1], ['wood', 2]]), playBothOnLastTurn: true },
|
||||||
|
{ cost: new Map([['paper', 1], ['brick', 3]]), sciences: new Set(['engineering', 'research', 'education']) },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Temple of Artemis at Ephesus A',
|
name: 'Temple of Artemis at Ephesus A',
|
||||||
innateResource: 'paper'
|
innateResource: 'paper',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['stone', 2]]), points: 3 },
|
||||||
|
{ cost: new Map([['wood', 2]]), gold: 9 },
|
||||||
|
{ cost: new Map([['paper', 2]]), points: 7 },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Temple of Artemis at Ephesus B',
|
name: 'Temple of Artemis at Ephesus B',
|
||||||
innateResource: 'paper'
|
innateResource: 'paper',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['stone', 2]]), points: 2, gold: 4 },
|
||||||
|
{ cost: new Map([['wood', 2]]), points: 3, gold: 4 },
|
||||||
|
{ cost: new Map([['paper', 1], ['cloth', 1], ['glass', 1]]), points: 5, gold: 4 },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Statue of Zeus at Olympia A',
|
name: 'Statue of Zeus at Olympia A',
|
||||||
innateResource: 'wood'
|
innateResource: 'wood',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['wood', 2]]), points: 3 },
|
||||||
|
{ cost: new Map([['stone', 2]]), ignoreCostOncePerAge: true },
|
||||||
|
{ cost: new Map([['ore', 2]]), points: 7 },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Statue of Zeus at Olympia B',
|
name: 'Statue of Zeus at Olympia B',
|
||||||
innateResource: 'wood'
|
innateResource: 'wood',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['wood', 2]]), discountTrade: [{ resourceType: 'basic', direction: ['left', 'right'], amount: 1 }] },
|
||||||
|
{ cost: new Map([['stone', 2]]), points: 5 },
|
||||||
|
{ cost: new Map([['cloth', 1], ['ore', 2]]), copyNeighboringGuild: true },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Mausoleum at Halicarnassus A',
|
name: 'Mausoleum at Halicarnassus A',
|
||||||
innateResource: 'cloth'
|
innateResource: 'cloth',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['brick', 2]]), points: 3 },
|
||||||
|
{ cost: new Map([['ore', 3]]), buildDiscardedNow: true },
|
||||||
|
{ cost: new Map([['cloth', 2]]), points: 7 },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Mausoleum at Halicarnassus B',
|
name: 'Mausoleum at Halicarnassus B',
|
||||||
innateResource: 'cloth'
|
innateResource: 'cloth',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['ore', 2]]), points: 2, buildDiscardedNow: true },
|
||||||
|
{ cost: new Map([['brick', 3]]), points: 1, buildDiscardedNow: true },
|
||||||
|
{ cost: new Map([['paper', 1], ['cloth', 1], ['glass', 1]]), buildDiscardedNow: true },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Colossus of Rhodes A',
|
name: 'Colossus of Rhodes A',
|
||||||
innateResource: 'ore'
|
innateResource: 'ore',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['wood', 2]]), points: 3 },
|
||||||
|
{ cost: new Map([['brick', 3]]), shields: 2 },
|
||||||
|
{ cost: new Map([['ore', 4]]), points: 7 },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Colossus of Rhodes B',
|
name: 'Colossus of Rhodes B',
|
||||||
innateResource: 'ore'
|
innateResource: 'ore',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['stone', 3]]), shields: 1, points: 3, gold: 3 },
|
||||||
|
{ cost: new Map([['ore', 4]]), shields: 1, points: 4, gold: 4 },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Lighthouse of Alexandria A',
|
name: 'Lighthouse of Alexandria A',
|
||||||
innateResource: 'glass'
|
innateResource: 'glass',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['stone', 2]]), points: 3 },
|
||||||
|
{ cost: new Map([['ore', 2]]), resources: new Map([['brick', 1], ['ore', 1], ['wood', 1], ['stone', 1]]) },
|
||||||
|
{ cost: new Map([['glass', 2]]), points: 7 },
|
||||||
|
],
|
||||||
}, {
|
}, {
|
||||||
name: 'Lighthouse of Alexandria B',
|
name: 'Lighthouse of Alexandria B',
|
||||||
innateResource: 'glass'
|
innateResource: 'glass',
|
||||||
|
stages: [
|
||||||
|
{ cost: new Map([['brick', 2]]), resources: new Map([['brick', 1], ['ore', 1], ['wood', 1], ['stone', 1]]) },
|
||||||
|
{ cost: new Map([['wood', 2]]), resources: new Map([['glass', 1], ['cloth', 1], ['paper', 1]]) },
|
||||||
|
{ cost: new Map([['stone', 3]]), points: 7 },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
export const wonders = new Map(wonderList.map(w => [w.name, w]))
|
export const wonders = new Map(wonderList.map(w => [w.name, w]))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user