172 lines
5.4 KiB
Lua
172 lines
5.4 KiB
Lua
-- cross-mod.lua - Used for compatibility and content with other mods
|
|
|
|
--For Double Scale/Scalae, modify Green Joker to use one variable
|
|
SMODS.Joker:take_ownership("green_joker", {
|
|
config = { extra = 1, mult = 0 },
|
|
name = "cry-Green Joker", --will prevent old calculation code from working
|
|
loc_vars = function(self, info_queue, center)
|
|
return { vars = { center.ability.extra, center.ability.extra, center.ability.mult } }
|
|
end,
|
|
calculate = function(self, card, context)
|
|
if
|
|
context.discard
|
|
and not context.blueprint
|
|
and context.other_card == context.full_hand[#context.full_hand]
|
|
then
|
|
if card.ability.mult ~= 0 then
|
|
SMODS.scale_card(card, {
|
|
ref_table = card.ability,
|
|
ref_value = "mult",
|
|
scalar_table = card.ability,
|
|
scalar_value = "extra",
|
|
operation = function(ref_table, ref_value, initial, change)
|
|
ref_table[ref_value] = math.max(0, initial - change)
|
|
end,
|
|
message_key = "a_mult_minus",
|
|
message_colour = G.C.RED,
|
|
})
|
|
end
|
|
end
|
|
if context.cardarea == G.jokers and context.before and not context.blueprint then
|
|
SMODS.scale_card(card, {
|
|
ref_table = card.ability,
|
|
ref_value = "mult",
|
|
scalar_value = "extra",
|
|
message_key = "a_mult",
|
|
message_colour = G.C.RED,
|
|
})
|
|
end
|
|
if context.joker_main then
|
|
return {
|
|
message = localize({ type = "variable", key = "a_mult", vars = { card.ability.mult } }),
|
|
mult_mod = card.ability.mult,
|
|
}
|
|
end
|
|
end,
|
|
loc_txt = {},
|
|
}, true)
|
|
|
|
--Requires Malverk Mod
|
|
if (SMODS.Mods["malverk"] or {}).can_load then
|
|
AltTexture({
|
|
key = "jolly_jokers",
|
|
set = "Joker",
|
|
path = "jolly.png",
|
|
loc_txt = {
|
|
name = "Jolly Jokers",
|
|
},
|
|
})
|
|
TexturePack({ -- HD Texture Pack
|
|
key = "jolly_texture",
|
|
textures = {
|
|
"cry_jolly_jokers",
|
|
},
|
|
loc_txt = {
|
|
name = "Jolly",
|
|
text = {
|
|
"Jolly Jokers",
|
|
"Art by B",
|
|
},
|
|
},
|
|
})
|
|
end
|
|
|
|
--Make extra modifiers display on the Next Ante Preview
|
|
if (SMODS.Mods["AntePreview"] or {}).can_load then
|
|
local predict_hook = predict_next_ante
|
|
function predict_next_ante()
|
|
local small = "bl_small"
|
|
local big = "bl_big"
|
|
if G.GAME.modifiers.cry_big_boss_rate and pseudorandom("cry_big_boss") < G.GAME.modifiers.cry_big_boss_rate then
|
|
big = get_new_boss()
|
|
elseif G.GAME.modifiers.cry_rush_hour_ii then
|
|
small = get_new_boss()
|
|
big = get_new_boss()
|
|
end
|
|
local predictions = predict_hook()
|
|
local s = Cryptid.get_next_tag("Small")
|
|
local b = Cryptid.get_next_tag("Big")
|
|
if s or b then
|
|
predictions.Small.tag = s or predictions.Small.tag
|
|
predictions.Big.tag = b or predictions.Big.tag
|
|
end
|
|
if G.GAME.modifiers.cry_no_tags then
|
|
for _, pred in pairs(predictions) do
|
|
pred.tag = nil
|
|
end
|
|
end
|
|
predictions.Small.blind = small
|
|
predictions.Big.blind = big
|
|
if G.P_BLINDS[predictions.Small.blind].boss then
|
|
G.GAME.bosses_used[predictions.Small.blind] = G.GAME.bosses_used[predictions.Small.blind] - 1
|
|
end
|
|
if G.P_BLINDS[predictions.Big.blind].boss then
|
|
G.GAME.bosses_used[predictions.Big.blind] = G.GAME.bosses_used[predictions.Big.blind] - 1
|
|
end
|
|
if G.GAME.modifiers.cry_no_small_blind then
|
|
predictions.Small = nil
|
|
end
|
|
return predictions
|
|
end
|
|
end
|
|
|
|
--Designed to run if ran with is_suit overriding mods of higher priority (UnStable comes to first mind)
|
|
function Card:is_suit_force_enhancement(suit, bypass_debuff, flush_calc)
|
|
--Force suit to be suit X if specified in enhancement, only if not vampired
|
|
if Cryptid.cry_enhancement_has_specific_suit(self) and not self.vampired then
|
|
return suit == Cryptid.cry_enhancement_get_specific_suit(self)
|
|
end
|
|
local ref = self:is_suit(suit, bypass_debuff, flush_calc)
|
|
return ref
|
|
end
|
|
|
|
-- === Cross mod access for Cryptid === --
|
|
-- IcyEthics: Adding this section to collect functions that are intended to help other mods
|
|
-- interact with Cryptid's functionality in some way
|
|
|
|
-- ://CLASS API
|
|
-- This function allows another mod to set up a name and alias that's accessible by the ://CLASS Code Card
|
|
-- It's also set up more generically so that other mods can access the same information
|
|
Cryptid.enhancement_alias_list = {}
|
|
|
|
---@param list table
|
|
function Cryptid.load_enhancement_aliases(list)
|
|
for _enhancementkey, _listofaliases in pairs(list) do
|
|
Cryptid.enhancement_alias_list[_enhancementkey] = _listofaliases
|
|
end
|
|
end
|
|
|
|
-- Acclimator Voucher API functions
|
|
-- This should allow other mods to set up their own tier 3 vouchers in the style of
|
|
-- the Tarot Acclimator voucher by setting up the voucher and just initializing
|
|
-- a call to this function in their initialization
|
|
|
|
Cryptid.voucher_acclimator_data = {}
|
|
|
|
---@param voucher_key string
|
|
---@param localization_key string
|
|
---@param ref_value string
|
|
---@param colour any
|
|
function Cryptid.setup_voucher_rate_adjuster(voucher_key, localization_key, ref_value, colour)
|
|
-- Necessary values:
|
|
-- Voucher key
|
|
-- localize key
|
|
-- ref value
|
|
-- colour
|
|
|
|
if not voucher_key or not localization_key or not ref_value or not colour then
|
|
print("Cryptid.setup_voucher_rate_adjuster was improperly called")
|
|
end
|
|
|
|
Cryptid.voucher_acclimator_data[#Cryptid.voucher_acclimator_data + 1] = {
|
|
voucher_key = voucher_key,
|
|
localization_key = localization_key,
|
|
ref_value = ref_value,
|
|
colour = colour,
|
|
}
|
|
print(Cryptid.voucher_acclimator_data[#Cryptid.voucher_acclimator_data])
|
|
end
|
|
|
|
Cryptid.setup_voucher_rate_adjuster("v_cry_tacclimator", "b_tarot_rate", "tarot", G.C.SECONDARY_SET.Tarot)
|
|
Cryptid.setup_voucher_rate_adjuster("v_cry_pacclimator", "b_planet_rate", "planet", G.C.SECONDARY_SET.Planet)
|