@@ -8,10 +8,13 @@ import { Deck } from "../domain/Deck";
88export class DeckCreator {
99 private readonly cardRepository : CardRepository ;
1010 private readonly deckRules : DeckRules ;
11+ private readonly duelFlags : bigint ;
12+ private readonly DUEL_EXTRA_DECK_RITUAL_FLAG = 0x800000000n ;
1113
12- constructor ( cardRepositoy : CardRepository , deckRules : DeckRules ) {
14+ constructor ( cardRepositoy : CardRepository , deckRules : DeckRules , duelFlags : bigint ) {
1315 this . cardRepository = cardRepositoy ;
1416 this . deckRules = deckRules ;
17+ this . duelFlags = duelFlags ;
1518 }
1619
1720 async build ( {
@@ -26,14 +29,20 @@ export class DeckCreator {
2629 const mainDeck : Card [ ] = [ ] ;
2730 const extraDeck : Card [ ] = [ ] ;
2831 const sideDeck : Card [ ] = [ ] ;
32+ const placeRitualInExtraDeckEnabled = this . placeRitualInExtraDeckEnabled ( ) ;
2933
3034 for ( const code of main ) {
3135 // eslint-disable-next-line no-await-in-loop
3236 const card = await this . cardRepository . findByCode ( code . toString ( ) ) ;
3337 if ( ! card ) {
3438 continue ;
3539 }
36- card . isExtraCard ( ) ? extraDeck . push ( card ) : mainDeck . push ( card ) ;
40+
41+ if ( card . isExtraCard ( ) || ( card . isRitualMonster ( ) && placeRitualInExtraDeckEnabled ) ) {
42+ extraDeck . push ( card ) ;
43+ } else {
44+ mainDeck . push ( card ) ;
45+ }
3746 }
3847
3948 for ( const code of side ) {
@@ -55,4 +64,8 @@ export class DeckCreator {
5564 deckRules : this . deckRules ,
5665 } ) ;
5766 }
67+
68+ private placeRitualInExtraDeckEnabled ( ) : boolean {
69+ return ( this . duelFlags & this . DUEL_EXTRA_DECK_RITUAL_FLAG ) !== 0n ;
70+ }
5871}
0 commit comments