@@ -151,39 +151,24 @@ void parse_card_node(Cards& all_cards, Card* card, xml_node<>* card_node)
151151 if (cost_node) { card->m_delay = atoi (cost_node->value ()); }
152152 if (id_node)
153153 {
154- if (cost_node)
155- {
156- if (attack_node)
157- {
158- if (card->m_attack == 0 )
159- {
160- if (card->m_id < 1000 )
161- { card->m_type = CardType::assault; }
162- else if (card->m_id < 2000 )
163- { card->m_type = CardType::commander; }
164- else if (card->m_id < 3000 )
165- { card->m_type = CardType::structure; }
166- else if (card->m_id < 8000 )
167- { card->m_type = CardType::assault; }
168- else if (card->m_id < 10000 )
169- { card->m_type = CardType::structure; }
170- else if (card->m_id < 17000 )
171- { card->m_type = CardType::assault; }
172- else if (card->m_id < 25000 )
173- { card->m_type = CardType::structure; }
174- else if (card->m_id < 30000 )
175- { card->m_type = CardType::commander; }
176- else
177- { card->m_type = CardType::assault; }
178- }
179- else // attack > 0: must be assault
180- { card->m_type = CardType::assault; }
181- }
182- else // no attack_node: must be structure
183- { card->m_type = CardType::structure; }
184- }
185- else // no cost_node: must be commander
154+ if (card->m_id < 1000 )
155+ { card->m_type = CardType::assault; }
156+ else if (card->m_id < 2000 )
157+ { card->m_type = CardType::commander; }
158+ else if (card->m_id < 3000 )
159+ { card->m_type = CardType::structure; }
160+ else if (card->m_id < 8000 )
161+ { card->m_type = CardType::assault; }
162+ else if (card->m_id < 10000 )
163+ { card->m_type = CardType::structure; }
164+ else if (card->m_id < 17000 )
165+ { card->m_type = CardType::assault; }
166+ else if (card->m_id < 25000 )
167+ { card->m_type = CardType::structure; }
168+ else if (card->m_id < 30000 )
186169 { card->m_type = CardType::commander; }
170+ else
171+ { card->m_type = CardType::assault; }
187172 }
188173 if (rarity_node) { card->m_rarity = atoi (rarity_node->value ()); }
189174 if (type_node) { card->m_faction = static_cast <Faction>(atoi (type_node->value ())); }
@@ -287,6 +272,15 @@ Deck* read_deck(Decks& decks, const Cards& all_cards, xml_node<>* node, DeckType
287272 xml_node<>* commander_max_level_node (node->first_node (" commander_max_level" ));
288273 unsigned commander_max_level = commander_max_level_node ? atoi (commander_max_level_node->value ()) : commander_card->m_top_level_card ->m_level ;
289274 unsigned upgrade_opportunities = commander_max_level - card->m_level ;
275+ std::vector<const Card*> fort_cards;
276+ for (xml_node<>* fortress_card_node = node->first_node (" fortress_card" );
277+ fortress_card_node;
278+ fortress_card_node = fortress_card_node->next_sibling (" fortress_card" ))
279+ {
280+ const Card * card = all_cards.by_id (atoi (fortress_card_node->first_attribute (" id" )->value ()));
281+ fort_cards.push_back (card);
282+ upgrade_opportunities += card->m_top_level_card ->m_level - card->m_level ;
283+ }
290284 std::vector<const Card*> always_cards;
291285 std::vector<std::tuple<unsigned , unsigned , std::vector<const Card*>>> some_cards;
292286 xml_node<>* deck_node (node->first_node (" deck" ));
@@ -329,19 +323,23 @@ Deck* read_deck(Decks& decks, const Cards& all_cards, xml_node<>* node, DeckType
329323 decks.decks .push_back (Deck{all_cards, decktype, id, deck_name, (upgrade_opportunities + 1 ) * (level - 1 ) / (max_level - 1 ), upgrade_opportunities});
330324 Deck* deck = &decks.decks .back ();
331325 deck->set (commander_card, commander_max_level, always_cards, some_cards, mission_req);
326+ deck->fort_cards = fort_cards;
332327 decks.add_deck (deck, deck_name);
333328 decks.add_deck (deck, decktype_names[decktype] + " #" + to_string (id) + " -" + to_string (level));
334329 }
335330
336331 decks.decks .push_back (Deck{all_cards, decktype, id, base_deck_name});
337332 Deck* deck = &decks.decks .back ();
338333 deck->set (commander_card, commander_max_level, always_cards, some_cards, mission_req);
334+ deck->fort_cards = fort_cards;
339335
340336 // upgrade cards for full-level missions/raids
341337 if (max_level > 1 )
342338 {
343339 while (deck->commander ->m_level < commander_max_level)
344340 { deck->commander = deck->commander ->upgraded (); }
341+ for (auto && card: deck->fort_cards )
342+ { card = card->m_top_level_card ; }
345343 for (auto && card: deck->cards )
346344 { card = card->m_top_level_card ; }
347345 for (auto && pool: deck->variable_cards )
0 commit comments