SMODS.Atlas {
    px = 71,
    py = 95,
    key = "janebooster",
    path = Jane.config.texture_pack .. "/p_jane_boosters.png"
}

for i = 1, 2 do
    SMODS.Booster {
        key = "ministandard" .. i,
        loc_txt = {
            name = "Mini Standard Pack",
            text = {
                "Choose {C:attention}#1#{} of up to",
                "{C:attention}#2# playing cards{} to",
                "add to your deck",
            }
        },
        atlas = "janebooster",
        pos = {x = 6, y = i - 1},
        weight = 0.4,
        cost = 2,
        config = {extra = 2, choose = 1},
        loc_vars = function(_, _, card)
            return {vars = {card.ability.choose, card.ability.extra}}
        end,
        ease_background_colour = function(_)
            ease_background_colour_blind(G.STATES.STANDARD_PACK)
        end,
        create_UIBox = function(_)
            return create_UIBox_standard_pack()
        end,
        particles = function(_)
            G.booster_pack_sparkles = Particles(1, 1, 0,0, {
                timer = 0.015,
                scale = 0.3,
                initialize = true,
                lifespan = 3,
                speed = 0.2,
                padding = -1,
                attach = G.ROOM_ATTACH,
                colours = {G.C.BLACK, G.C.RED},
                fill = true
            })

            G.booster_pack_sparkles.fade_alpha = 1
            G.booster_pack_sparkles:fade(1, 0)
        end,
        create_card = function(_, _, _)
            local edition = poll_edition("standard_edition"..G.GAME.round_resets.ante, 2, true)
            local seal = SMODS.poll_seal({mod = 10})

            return {
                set = (pseudorandom(pseudoseed("stdset"..G.GAME.round_resets.ante)) > 0.6) and "Enhanced" or "Base",
                edition = edition,
                seal = seal,
                area = G.pack_cards,
                skip_materialize = true,
                soulable = true,
                key_append = "sta"
            }
        end,
    }
end

for i = 1, 2 do
    SMODS.Booster {
        key = "miniarcana" .. i,
        loc_txt = {
            name = "Mini Arcana Pack",
            text = {
                "Choose {C:attention}#1#{} of up to",
                "{C:attention}#2# {C:tarot}Tarot{} cards to",
                "be used immediately",
            }
        },
        atlas = "janebooster",
        pos = {x = 3 + i, y = 1},
        weight = 0.4,
        cost = 2,
        config = {extra = 2, choose = 1},
        draw_hand = true,
        loc_vars = function(_, _, card)
            return {vars = {card.ability.choose, card.ability.extra}}
        end,
        ease_background_colour = function(_)
            ease_background_colour_blind(G.STATES.TAROT_PACK)
        end,
        create_UIBox = function(_)
            return create_UIBox_arcana_pack()
        end,
        particles = function(_)
            G.booster_pack_sparkles = Particles(1, 1, 0,0, {
                timer = 0.015,
                scale = 0.2,
                initialize = true,
                lifespan = 1,
                speed = 1.1,
                padding = -1,
                attach = G.ROOM_ATTACH,
                colours = {G.C.WHITE, lighten(G.C.PURPLE, 0.4), lighten(G.C.PURPLE, 0.2), lighten(G.C.GOLD, 0.2)},
                fill = true
            })

            G.booster_pack_sparkles.fade_alpha = 1
            G.booster_pack_sparkles:fade(1, 0)
        end,
        create_card = function(_, _, _)
            if G.GAME.used_vouchers.v_omen_globe and pseudorandom("omen_globe") > 0.8 then
                return {
                    set = "Spectral",
                    soulable = true,
                    key_append = "ar2",
                    area = G.pack_cards,
                    skip_materialize = true,
                }
            end

            return {
                set = "Tarot",
                soulable = true,
                key_append = "ar1",
                area = G.pack_cards,
                skip_materialize = true,
            }
        end
    }
end

for i = 1, 2 do
    SMODS.Booster {
        key = "minicelestial" .. i,
        atlas = "janebooster",
        loc_txt = {
            name = "Mini Celestial Pack",
            text = {
                "Choose {C:attention}#1#{} of up to",
                "{C:attention}#2# {C:planet}Planet{} cards to",
                "be used immediately",
            }
        },
        config = {extra = 2, choose = 1},
        pos = {x = 3 + i, y = 0},
        cost = 2,
        weight = 0.4,
        loc_vars = function(_, _, card)
            return {vars = {card.ability.choose, card.ability.extra}}
        end,
        ease_background_colour = function(_) ease_background_colour_blind(G.STATES.PLANET_PACK) end,
        create_UIBox = function(_) return create_UIBox_celestial_pack() end,
        set_ability = function (_, card, _, delay_sprites)
            card.ability = card.ability or {}
            card.ability.set = "Booster"
            card.ability.name = "Mini Celestial Pack"
        end,
        particles = function(_)
            G.booster_pack_stars = Particles(1, 1, 0,0, {
                fill = true,
                scale = 0.1,
                speed = 0.1,
                timer = 0.07,
                padding = -4,
                lifespan = 15,
                initialize = true,
                attach = G.ROOM_ATTACH,
                colours = {G.C.WHITE, HEX("a7d6e0"), HEX("fddca0")},
            })

            G.booster_pack_meteors = Particles(1, 1, 0,0, {
                speed = 4,
                timer = 2,
                fill = true,
                scale = 0.05,
                lifespan = 1.5,
                attach = G.ROOM_ATTACH,
                colours = {G.C.WHITE},
            })
        end,
        create_card = function(_, _, index)
            if not G.GAME.used_vouchers.v_telescope or index ~= 1 then
                return {
                    set = "Planet",
                    area = G.pack_cards,
                    skip_materialize = true,
                    soulable = true,
                    key_append = "pl1"
                }
            end

            local planet, hand, tally = nil, nil, 0

            for _, v in ipairs(G.handlist) do
                if G.GAME.hands[v].visible and G.GAME.hands[v].played > tally then
                    hand = v
                    tally = G.GAME.hands[v].played
                end
            end

            if hand then
                for _, v in pairs(G.P_CENTER_POOLS.Planet) do
                    if v.config.hand_type == hand then
                        planet = v.key
                    end
                end
            end

            return {
                key = planet,
                set = "Planet",
                soulable = true,
                key_append = "pl1",
                area = G.pack_cards,
                skip_materialize = true,
            }
        end
    }
end

for i = 1, 2 do
    SMODS.Booster {
        key = "minispectral" .. i,
        atlas = "janebooster",
        loc_txt = {
            name = "Mini Spectral Pack",
            text = {
                "Choose {C:attention}#1#{} of up to",
                "{C:attention}#2# {C:spectral}Spectral{} cards to",
                "be used immediately",
            }
        },
        config = {extra = 1, choose = 1},
        pos = {x = 3 + i, y = 2},
        cost = 2,
        weight = 0.225,
        draw_hand = true,
        loc_vars = function(_, _, card)
            return {vars = {card.ability.choose, card.ability.extra}}
        end,
        ease_background_colour = function(_)
            ease_background_colour_blind(G.STATES.SPECTRAL_PACK)
        end,
        create_UIBox = function(_)
            return create_UIBox_spectral_pack()
        end,
        particles = function(_)
            G.booster_pack_sparkles = Particles(1, 1, 0,0, {
                scale = 0.1,
                fill = true,
                speed = 0.2,
                lifespan = 3,
                padding = -1,
                timer = 0.015,
                initialize = true,
                attach = G.ROOM_ATTACH,
                colours = {G.C.WHITE, lighten(G.C.GOLD, 0.2)},
            })

            G.booster_pack_sparkles.fade_alpha = 1
            G.booster_pack_sparkles:fade(1, 0)
        end,
        create_card = function(_, _, _)
            return {
                soulable = true,
                set = "Spectral",
                key_append = "spe",
                area = G.pack_cards,
                skip_materialize = true,
            }
        end,
    }
end
