balatro-mods/UnStable-main/override/jokerdisplay.lua
2025-02-24 13:28:04 +08:00

183 lines
6.1 KiB
Lua

local jd = JokerDisplay.Definitions
--UnStable's Joker
--[[jd["j_unstb_lunar_calendar"] = {
text = {
{ text = "+" },
{ ref_table = "card.joker_display_values", ref_value = "count", retrigger_type = "mult" },
},
text_config = { colour = G.C.SECONDARY_SET.Planet },
reminder_text = {
{ text = "(" },
{ ref_table = "card.joker_display_values", ref_value = "lunar_suit"},
{ text = ")" }
},
extra = {
{
{ text = "(" },
{ ref_table = "card.joker_display_values", ref_value = "odds" },
{ text = ")" },
}
},
extra_config = { colour = G.C.GREEN, scale = 0.3 },
calc_function = function(card)
local count = 0
local text, _, scoring_hand = JokerDisplay.evaluate_hand()
if text ~= 'Unknown' then
for _, scoring_card in pairs(scoring_hand) do
if scoring_card:get_id() and scoring_card:is_suit(card.ability.extra.suit) then
count = count +
JokerDisplay.calculate_card_triggers(scoring_card, scoring_hand)
end
end
end
card.joker_display_values.count = count
card.joker_display_values.odds = localize { type = 'variable', key = "jdis_odds", vars = { (G.GAME and G.GAME.probabilities.normal or 1), card.ability.extra.odds_spawn } }
card.joker_display_values.lunar_suit = localize(card.ability.extra.suit, 'suits_plural')
end,
style_function = function(card, text, reminder_text, extra)
if reminder_text and reminder_text.children[2] then
reminder_text.children[2].config.colour = lighten(G.C.SUITS[card.ability.extra.suit], 0.35)
end
return false
end
}
jd["j_unstb_dragon_hoard"] = {
text = {
{ text = "+" },
{ ref_table = "card.joker_display_values", ref_value = "mult", retrigger_type = "mult" },
},
text_config = { colour = G.C.MULT },
calc_function = function(card)
card.joker_display_values.mult = (G.consumeables and card.ability.extra.mult_rate * math.floor(#G.consumeables.cards/card.ability.extra.held_amount))or 0
end
}
jd["j_unstb_card_dealer"] = {
text = {
{ text = "+" },
{ ref_table = "card.ability.extra", ref_value = "chips", retrigger_type = "mult" }
},
text_config = { colour = G.C.CHIPS },
}
jd["j_unstb_match_three"] = {
text = {
{ text = "+" },
{ ref_table = "card.joker_display_values", ref_value = "mult", retrigger_type = "mult" },
},
text_config = { colour = G.C.MULT },
calc_function = function(card)
local count = 0
local text, _, scoring_hand = JokerDisplay.evaluate_hand()
if text ~= 'Unknown' then
--TODO: Check for suits in the adjacent card
for _, scoring_card in pairs(scoring_hand) do
if scoring_card:get_id() and scoring_card:is_suit(card.ability.extra.suit) then
count = count +
JokerDisplay.calculate_card_triggers(scoring_card, scoring_hand)
end
end
end
card.joker_display_values.mult = count
end
}]]
--Vanilla Override Jokers
if unstb_global.config.joker.vanilla then
jd["j_fibonacci"].calc_function = function(card)
local mult = 0
local text, _, scoring_hand = JokerDisplay.evaluate_hand()
if text ~= 'Unknown' then
for _, scoring_card in pairs(scoring_hand) do
if not scoring_card.config.center.no_rank and (unstb_global.fibo[scoring_card.base.nominal] or scoring_card.base.value == 'Ace') then
mult = mult +
card.ability.extra.mult *
JokerDisplay.calculate_card_triggers(scoring_card, scoring_hand)
end
end
end
card.joker_display_values.mult = mult
if getPoolRankFlagEnable('unstb_0') or getPoolRankFlagEnable('unstb_1') or getPoolRankFlagEnable('unstb_13') or getPoolRankFlagEnable('unstb_21') then
card.joker_display_values.localized_text = "(0,1," .. localize("Ace", "ranks") .. ",2,3,5,8,13,21)"
else
card.joker_display_values.localized_text = "(" .. localize("Ace", "ranks") .. ",2,3,5,8)"
end
end
jd["j_even_steven"].reminder_text = {
{ ref_table = "card.joker_display_values", ref_value = "localized_text" },
}
jd["j_even_steven"].calc_function = function(card)
local mult = 0
local text, _, scoring_hand = JokerDisplay.evaluate_hand()
if text ~= 'Unknown' then
for _, scoring_card in pairs(scoring_hand) do
if unstb_global.modulo_check(scoring_card, 2, 0) then
mult = mult +
card.ability.extra.mult *
JokerDisplay.calculate_card_triggers(scoring_card, scoring_hand)
end
end
end
card.joker_display_values.mult = mult
if getPoolRankFlagEnable('unstb_0') or getPoolRankFlagEnable('unstb_12') then
card.joker_display_values.localized_text = "(12,10,8,6,4,2,0)"
else
card.joker_display_values.localized_text = "(10,8,6,4,2)"
end
end
jd["j_odd_todd"].reminder_text = {
{ ref_table = "card.joker_display_values", ref_value = "localized_text" },
}
jd["j_odd_todd"].calc_function = function(card)
local chips = 0
local text, _, scoring_hand = JokerDisplay.evaluate_hand()
if text ~= 'Unknown' then
for _, scoring_card in pairs(scoring_hand) do
if unstb_global.modulo_check(scoring_card, 2, 1) then
chips = chips +
card.ability.extra.chips *
JokerDisplay.calculate_card_triggers(scoring_card, scoring_hand)
end
end
end
card.joker_display_values.chips = chips
if getPoolRankFlagEnable('unstb_1') or getPoolRankFlagEnable('unstb_11') or getPoolRankFlagEnable('unstb_13') or getPoolRankFlagEnable('unstb_21') or getPoolRankFlagEnable('unstb_25') or getPoolRankFlagEnable('unstb_161')then
card.joker_display_values.localized_text = "(161,25,21,13,11," .. localize("Ace", "ranks") .. ",9,7,5,3,1)"
else
card.joker_display_values.localized_text = "(" .. localize("Ace", "ranks") .. ",9,7,5,3)"
end
end
--Completely redefine Hack
jd["j_hack"] = {
reminder_text = {
{ ref_table = "card.joker_display_values", ref_value = "eligible_ranks" },
},
calc_function = function(card)
if getPoolRankFlagEnable('unstb_0') or getPoolRankFlagEnable('unstb_1') then
card.joker_display_values.eligible_ranks = "(0,1,2,3,4,5)"
else
card.joker_display_values.eligible_ranks = "(2,3,4,5)"
end
end,
retrigger_function = function(playing_card, scoring_hand, held_in_hand, joker_card)
if held_in_hand then return 0 end
return (not playing_card.config.center.no_rank and unstb_global.hack[playing_card.base.value]) and
joker_card.ability.extra * JokerDisplay.calculate_joker_triggers(joker_card) or 0
end
}
end