@@ -4,8 +4,10 @@ import CivilizationType from './enum/CivilizationType'
4
4
import Action from './enum/Action'
5
5
import CivilizationName from './enum/CivilizationName'
6
6
import findMandatory from '@brdgm/brdgm-commons/src/util/map/findMandatory'
7
+ import Expansion from './enum/Expansion'
8
+ import Module from './enum/Module'
7
9
8
- const cards = [
10
+ const cards : Card [ ] = [
9
11
/* Standard Action Cards */
10
12
{ name : CardName . CONQUER_IF_ARCHITECTURAL , actions : [
11
13
{ action : Action . CONQUER_1_ADJACENT_LOWEST_COST } ,
@@ -104,6 +106,48 @@ const cards = [
104
106
{ action : Action . BUILDING_TAKE_LOWEST_COST } ,
105
107
{ action : Action . DEVELOP_1_CULTURAL_POLICY_2_GOLD_PER_POLICY , ifType : CivilizationType . CULTURAL } ,
106
108
] } ,
109
+ { name : CardName . TRADE_TRACK_IF_ARCHITECTURAL , expansion :Expansion . AFRICAN_EMPIRES , actions : [
110
+ { action : Action . TRADE_TRACK_1_STEP } ,
111
+ { action : Action . TRADE_TRACK_1_STEP , gold : 1 } ,
112
+ { action : Action . TRADE_TRACK_1_STEP , gold : 1 } ,
113
+ { action : Action . DRAW_RESERVE_CARD_2_GAIN_WONDERS , ifType : CivilizationType . ARCHITECTURAL } ,
114
+ ] } ,
115
+ { name : CardName . TRADE_TRACK_IF_CULTURAL , expansion :Expansion . AFRICAN_EMPIRES , actions : [
116
+ { action : Action . TRADE_TRACK_1_STEP } ,
117
+ { action : Action . TRADE_TRACK_1_STEP , gold : 1 } ,
118
+ { action : Action . TRADE_TRACK_1_STEP , gold : 1 } ,
119
+ { action : Action . GAIN_2_GOLD_PER_POLICY , ifType : CivilizationType . CULTURAL } ,
120
+ ] } ,
121
+ { name : CardName . TRADE_TRACK_IF_ECONOMIC , expansion :Expansion . AFRICAN_EMPIRES , actions : [
122
+ { action : Action . TRADE_TRACK_1_STEP } ,
123
+ { action : Action . TRADE_TRACK_1_STEP , gold : 1 } ,
124
+ { action : Action . TRADE_TRACK_1_STEP , gold : 1 } ,
125
+ { action : Action . TRADE_TRACK_2_STEP , ifType : CivilizationType . ECONOMIC } ,
126
+ ] } ,
127
+ { name : CardName . TRADE_TRACK_IF_TECHNOLOGICAL , expansion :Expansion . AFRICAN_EMPIRES , actions : [
128
+ { action : Action . TRADE_TRACK_1_STEP } ,
129
+ { action : Action . TRADE_TRACK_1_STEP , gold : 1 } ,
130
+ { action : Action . TRADE_TRACK_1_STEP , gold : 1 } ,
131
+ { action : Action . DRAW_RESERVE_CARD_3_GAIN_KNOWLEDGE , ifType : CivilizationType . TECHNOLOGICAL } ,
132
+ ] } ,
133
+ { name : CardName . TRADE_TRACK_IF_AGGRESSIVE , expansion :Expansion . AFRICAN_EMPIRES , actions : [
134
+ { action : Action . TRADE_TRACK_1_STEP } ,
135
+ { action : Action . TRADE_TRACK_1_STEP , gold : 1 } ,
136
+ { action : Action . TRADE_TRACK_1_STEP , gold : 1 } ,
137
+ { action : Action . OPPONENTS_UNREST_DECK_DISCARD , ifType : CivilizationType . AGGRESSIVE } ,
138
+ ] } ,
139
+ { name : CardName . TRADING_POST_1 , expansion :Expansion . AFRICAN_EMPIRES , actions : [
140
+ { action : Action . BUILD_TRADING_POST } ,
141
+ { action : Action . REMOVE_CARD }
142
+ ] } ,
143
+ { name : CardName . TRADING_POST_2 , expansion :Expansion . AFRICAN_EMPIRES , actions : [
144
+ { action : Action . BUILD_TRADING_POST } ,
145
+ { action : Action . REMOVE_CARD }
146
+ ] } ,
147
+ { name : CardName . TAKE_HERO , module :Module . HEROES , actions : [
148
+ { action : Action . TAKE_RETURN_HERO } ,
149
+ { action : Action . DRAW_CARD }
150
+ ] } ,
107
151
/* Advanced Action Cards */
108
152
{ name : CardName . ADVANCED_EXPLORERS_KNOWLEDGE , advanced : true , actions : [
109
153
{ action : Action . EXPLORER_BOTH_MOVE_1_SPACE } ,
@@ -133,7 +177,24 @@ const cards = [
133
177
{ action : Action . CONQUER_1_ADJACENT_LOWEST_COST } ,
134
178
{ action : Action . CONQUER_1_ADJACENT_HIGHEST_COST } ,
135
179
] } ,
180
+ { name : CardName . ADVANCED_FEWEST_WONDERS , advanced : true , actions : [
181
+ { action : Action . FEWEST_WONDERS_WONDER_COMPLETE_ACQUIRE_GAIN_BUILDING_LOSTEST_COST } ,
182
+ { action : Action . DRAW_CARD } ,
183
+ ] } ,
184
+ { name : CardName . ADVANCED_FEWEST_CULTURAL_POLICIES , advanced : true , actions : [
185
+ { action : Action . FEWEST_CULTURAL_POLICIES_DEVELOP_1_CULTURAL_POLICY } ,
186
+ { action : Action . DRAW_CARD } ,
187
+ ] } ,
188
+ { name : CardName . ADVANCED_LAST_TRADE_TRACK , advanced : true , expansion :Expansion . AFRICAN_EMPIRES , actions : [
189
+ { action : Action . TRADE_TRACK_LAST_TRADE_TRACK_2_STEP } ,
190
+ { action : Action . DRAW_CARD } ,
191
+ ] } ,
192
+ { name : CardName . ADVANCED_FEWEST_PROVINCES , advanced : true , actions : [
193
+ { action : Action . FEWEST_PROVINCES_CONQUER_1_ADJACENT_LOWEST_COST } ,
194
+ { action : Action . DRAW_CARD } ,
195
+ ] } ,
136
196
/* Civilization Cards */
197
+ { name : CardName . MULTI_AUTOMA , actions : [ ] } ,
137
198
{ name : CardName . AMAZON_CIVILIZATION , civilization : CivilizationName . AMAZONS , actions : [
138
199
{ action : Action . AMAZON_GAIN_MOUNT_2_HORSES } ,
139
200
{ action : Action . DRAW_CARD } ,
@@ -165,6 +226,19 @@ const cards = [
165
226
{ action : Action . MUGHALS_DRAW_NEXT_REMOVE_NON_ECONOMIC } ,
166
227
{ action : Action . DRAW_CARD } ,
167
228
] } ,
229
+ { name : CardName . MALIANS_CIVILIZATION , civilization : CivilizationName . MALIANS , actions : [
230
+ { action : Action . GAIN_2_GOLD } ,
231
+ { action : Action . TRADE_TRACK_1_STEP } ,
232
+ { action : Action . DRAW_CARD } ,
233
+ ] } ,
234
+ { name : CardName . ZULU_CIVILIZATION , civilization : CivilizationName . ZULU , actions : [
235
+ { action : Action . OPPONENTS_UNREST_DECK_DISCARD } ,
236
+ { action : Action . DRAW_CARD } ,
237
+ ] } ,
238
+ { name : CardName . AKSUMITES_CIVILIZATION , civilization : CivilizationName . AKSUMITES , actions : [
239
+ { action : Action . DRAW_RESERVE_CARD_1_GAIN } ,
240
+ { action : Action . DRAW_CARD } ,
241
+ ] } ,
168
242
]
169
243
170
244
const cardsMap = new Map < CardName , Card > ( )
@@ -185,16 +259,19 @@ export default {
185
259
* Get standard action cards
186
260
* @returns cards
187
261
*/
188
- getStandard ( ) : Card [ ] {
189
- return cards . filter ( card => card . advanced == undefined && card . civilization == undefined )
262
+ getStandard ( expansions : Expansion [ ] , modules : Module [ ] ) : Card [ ] {
263
+ return cards . filter ( card => card . advanced == undefined
264
+ && card . civilization == undefined
265
+ && matches ( card , expansions , modules ) )
190
266
} ,
191
267
192
268
/**
193
269
* Get standard action cards
194
270
* @returns cards
195
271
*/
196
- getAdvanced ( ) : Card [ ] {
197
- return cards . filter ( card => card . advanced )
272
+ getAdvanced ( expansions : Expansion [ ] , modules : Module [ ] ) : Card [ ] {
273
+ return cards . filter ( card => card . advanced
274
+ && matches ( card , expansions , modules ) )
198
275
} ,
199
276
200
277
/**
@@ -210,3 +287,8 @@ export default {
210
287
}
211
288
212
289
}
290
+
291
+ function matches ( card : Card , expansions : Expansion [ ] , modules : Module [ ] ) {
292
+ return ( ! card . expansion || expansions . includes ( card . expansion ) )
293
+ && ( ! card . module || modules . includes ( card . module ) )
294
+ }
0 commit comments