public Deck GetDeckFor(DungeonMaster DM, Character user, Position posTarget,
                               Character charTarget)
        {
            Deck deck = new Deck();


            foreach (var ingredient in DeckRecipe)
            {
                var source = ingredient.Key;
                int num    = ResolveSource(source, DM, user, posTarget, charTarget);
                var card   = ingredient.Value;
                deck.AddCards(card, num);
            }

            user.AddModifiers(deck, DM, user, charTarget, this, false);

            if (charTarget != null)
            {
                charTarget.AddModifiers(deck, DM, user, null, this, true);
            }
            DM.AddSituationalModifiers(deck, this, user, posTarget, charTarget);

            deck.Consolidate();
            return(deck);
        }