Jane/src/booster.lua
2025-03-24 13:08:59 +01:00

271 lines
8.5 KiB
Lua

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