Buff Arctic Circle, Remove Escapey
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 611 B After Width: | Height: | Size: 611 B |
|
|
@ -3,7 +3,6 @@ return {
|
||||||
harsh_ante_scaling = true,
|
harsh_ante_scaling = true,
|
||||||
illusion_seal = true,
|
illusion_seal = true,
|
||||||
import_funky = false,
|
import_funky = false,
|
||||||
no_highlight_limit = true,
|
|
||||||
no_wild_debuff = true,
|
no_wild_debuff = true,
|
||||||
scribable_basket = false,
|
scribable_basket = false,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ return {
|
||||||
Joker = {
|
Joker = {
|
||||||
j_Roland_arctic = {
|
j_Roland_arctic = {
|
||||||
name = "Arctic Circle",
|
name = "Arctic Circle",
|
||||||
text = {"Retrigger all", "{C:dark_edition}Frozen {}cards"},
|
text = {"Retrigger {C:dark_edition}Frozen {}cards", "Retrigger playing cards"},
|
||||||
},
|
},
|
||||||
j_Roland_basket = {
|
j_Roland_basket = {
|
||||||
name = "Basket",
|
name = "Basket",
|
||||||
|
|
@ -147,16 +147,6 @@ return {
|
||||||
"{C:inactive}(Currently {C:red}+#3#{C:inactive} Mult)",
|
"{C:inactive}(Currently {C:red}+#3#{C:inactive} Mult)",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
j_Roland_escapey = {
|
|
||||||
name = "Escapey",
|
|
||||||
text = {
|
|
||||||
"Use to sell {C:attention}tags",
|
|
||||||
"for {X:money,C:white}$#1#X{} each",
|
|
||||||
"{s:0.75}If any {C:attention,s:0.75}consumables",
|
|
||||||
"{s:0.75}are unselected, sell",
|
|
||||||
"{s:0.75}those for {C:money,s:0.75}$#2# {s:0.75}instead",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
j_Roland_hardboiled = {
|
j_Roland_hardboiled = {
|
||||||
name = "Hard-Boiled",
|
name = "Hard-Boiled",
|
||||||
text = {
|
text = {
|
||||||
|
|
@ -390,16 +380,13 @@ return {
|
||||||
b_Roland_disabled = "Disabled",
|
b_Roland_disabled = "Disabled",
|
||||||
b_Roland_enabled = "Enabled",
|
b_Roland_enabled = "Enabled",
|
||||||
b_Roland_comma = ", ",
|
b_Roland_comma = ", ",
|
||||||
b_Roland_debuffed = "DEBUFFED",
|
|
||||||
b_Roland_entering_shop = "Entering shop!",
|
b_Roland_entering_shop = "Entering shop!",
|
||||||
b_Roland_escape = "ESCAPE",
|
|
||||||
b_Roland_equinox_assist = "Assist: Only hide text (Equinox)",
|
b_Roland_equinox_assist = "Assist: Only hide text (Equinox)",
|
||||||
b_Roland_scribable_basket = "Scribable Basket (overpowered)",
|
b_Roland_scribable_basket = "Scribable Basket (overpowered)",
|
||||||
b_Roland_harsh_ante_scaling = "Harsh ante scaling (Ante 40+)",
|
b_Roland_harsh_ante_scaling = "Harsh ante scaling (Ante 40+)",
|
||||||
b_Roland_illusion_seal = "Allow seals from Illusion voucher",
|
b_Roland_illusion_seal = "Allow seals from Illusion voucher",
|
||||||
b_Roland_import_funky = "Debug: Import funky.lua",
|
b_Roland_import_funky = "Debug: Import funky.lua",
|
||||||
b_Roland_most_common_card = "(Rank)",
|
b_Roland_most_common_card = "(Rank)",
|
||||||
b_Roland_no_highlight_limit = "No consumable highlight limit",
|
|
||||||
b_Roland_no_wild_debuff = "No wild card debuffs",
|
b_Roland_no_wild_debuff = "No wild card debuffs",
|
||||||
b_Roland_na = "N/A",
|
b_Roland_na = "N/A",
|
||||||
b_Roland_of = " of ",
|
b_Roland_of = " of ",
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
"author": [
|
"author": [
|
||||||
"Emik"
|
"Emik"
|
||||||
],
|
],
|
||||||
"version": "2.3.1",
|
"version": "2.4.0",
|
||||||
"badge_colour": "8BE9FD",
|
"badge_colour": "8BE9FD",
|
||||||
"main_file": "src/main.lua",
|
"main_file": "src/main.lua",
|
||||||
"badge_text_colour": "44475A",
|
"badge_text_colour": "44475A",
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
local f, q, u = unpack(... or require "lib.shared")
|
local f, q = unpack(... or require "lib.shared")
|
||||||
|
|
||||||
local negative = {key = "e_negative_consumable", set = "Edition", config = {extra = 1}}
|
local negative = {key = "e_negative_consumable", set = "Edition", config = {extra = 1}}
|
||||||
|
|
||||||
|
|
@ -33,10 +33,6 @@ local joker = (function()
|
||||||
end
|
end
|
||||||
end)()
|
end)()
|
||||||
|
|
||||||
local function destructible(card)
|
|
||||||
return not card.highlighted and not (card.ability or {}).eternal
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param card Card
|
---@param card Card
|
||||||
local function is_frozen(card)
|
local function is_frozen(card)
|
||||||
return card.edition and card.edition.key == "e_Roland_frozen"
|
return card.edition and card.edition.key == "e_Roland_frozen"
|
||||||
|
|
@ -55,82 +51,7 @@ SMODS.Sound {
|
||||||
}
|
}
|
||||||
|
|
||||||
joker {
|
joker {
|
||||||
key = "escapey",
|
key = "msjoker",
|
||||||
pronouns = "they_them",
|
|
||||||
config = {extra = {money = 2, xmoney = 1.5}},
|
|
||||||
attributes = {"destroy_card", "economy", "tag"},
|
|
||||||
cost = 4,
|
|
||||||
rarity = 2,
|
|
||||||
sinis = true,
|
|
||||||
soul_pos = true,
|
|
||||||
eternal_compat = true,
|
|
||||||
blueprint_compat = false,
|
|
||||||
perishable_compat = true,
|
|
||||||
loc_vars = function(_, _, card)
|
|
||||||
return {vars = {card.ability.extra.xmoney, card.ability.extra.money}}
|
|
||||||
end,
|
|
||||||
Bakery_can_use = function(_, card)
|
|
||||||
return u() and
|
|
||||||
not card.debuff and
|
|
||||||
not G.GAME.modifiers.Roland_debuff_escapey and
|
|
||||||
(next(G.GAME.tags) or f(G.consumeables.cards):any(destructible))
|
|
||||||
end,
|
|
||||||
Bakery_use_button_text = function(_, card)
|
|
||||||
return localize {
|
|
||||||
type = "variable",
|
|
||||||
key = (card.debuff or G.GAME.modifiers.Roland_debuff_escapey) and "b_Roland_debuffed" or "b_Roland_escape"
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
Bakery_use_joker = function(self, card)
|
|
||||||
if card.debuff then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local times, xtimes = 0, 0
|
|
||||||
local extra = card.ability.extra
|
|
||||||
|
|
||||||
f(G.consumeables.cards):where(destructible):each(function(v)
|
|
||||||
v:start_dissolve({HEX "57ecabff"}, nil, 1.6)
|
|
||||||
times = times + 1
|
|
||||||
end)
|
|
||||||
|
|
||||||
if times == 0 then
|
|
||||||
local delay = #G.GAME.tags >= self.tag_threshold and 0 or 1 / #G.GAME.tags
|
|
||||||
local trigger = delay == 0 and "immediate" or "before"
|
|
||||||
|
|
||||||
f(G.GAME.tags):each(function(v)
|
|
||||||
q {
|
|
||||||
blocking = delay ~= 0,
|
|
||||||
delay = delay,
|
|
||||||
trigger = trigger,
|
|
||||||
func = function()
|
|
||||||
attention_text {
|
|
||||||
scale = 0.7,
|
|
||||||
align = "cm",
|
|
||||||
text = "ESC",
|
|
||||||
cover = v.HUD_tag,
|
|
||||||
colour = G.C.WHITE,
|
|
||||||
cover_colour = G.C.BLACK,
|
|
||||||
hold = 0.3 / G.SETTINGS.GAMESPEED,
|
|
||||||
}
|
|
||||||
|
|
||||||
play_sound("cancel", 1.66, 0.5)
|
|
||||||
v.HUD_tag.states.visible = false
|
|
||||||
v:remove()
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
xtimes = xtimes + 1
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
ease_dollars(math.ceil(times * extra.money + G.GAME.dollars * (math.pow(extra.xmoney, xtimes) - 1)))
|
|
||||||
end,
|
|
||||||
tag_threshold = 30,
|
|
||||||
}
|
|
||||||
|
|
||||||
joker {
|
|
||||||
key = "msjoker", -- Blue bow
|
|
||||||
pronouns = "she_her",
|
pronouns = "she_her",
|
||||||
cost = 1,
|
cost = 1,
|
||||||
rarity = 1,
|
rarity = 1,
|
||||||
|
|
@ -735,7 +656,7 @@ joker {
|
||||||
config = {extra = {flipped = false}},
|
config = {extra = {flipped = false}},
|
||||||
attributes = {"xmult"},
|
attributes = {"xmult"},
|
||||||
cost = 0,
|
cost = 0,
|
||||||
rarity = 3,
|
rarity = 2,
|
||||||
eternal_compat = true,
|
eternal_compat = true,
|
||||||
blueprint_compat = true,
|
blueprint_compat = true,
|
||||||
perishable_compat = true,
|
perishable_compat = true,
|
||||||
|
|
@ -779,7 +700,7 @@ joker {
|
||||||
pronouns = "it_its",
|
pronouns = "it_its",
|
||||||
cost = 10,
|
cost = 10,
|
||||||
rarity = 3,
|
rarity = 3,
|
||||||
config = {extra = {repetitions = 1}},
|
config = {extra = {[false] = 1, [true] = 2}},
|
||||||
attributes = {"retrigger", "editions"},
|
attributes = {"retrigger", "editions"},
|
||||||
eternal_compat = true,
|
eternal_compat = true,
|
||||||
blueprint_compat = true,
|
blueprint_compat = true,
|
||||||
|
|
@ -788,15 +709,19 @@ joker {
|
||||||
table.insert(info_queue, G.P_CENTERS.e_Roland_frozen)
|
table.insert(info_queue, G.P_CENTERS.e_Roland_frozen)
|
||||||
end,
|
end,
|
||||||
calculate = function(_, card, context)
|
calculate = function(_, card, context)
|
||||||
return (context.repetition and is_frozen(context.other_card)) and {repetitions = 1} or SMODS.merge_effects(
|
return context.repetition and {repetitions = card.ability.extra[is_frozen(context.other_card)]} or
|
||||||
|
SMODS.merge_effects(
|
||||||
f(G.jokers.cards):where(is_frozen):map(function(v)
|
f(G.jokers.cards):where(is_frozen):map(function(v)
|
||||||
return SMODS.blueprint_effect(card, v, context) or true
|
return SMODS.blueprint_effect(card, v, context) or true
|
||||||
end):where(function(v)
|
end):where(function(v)
|
||||||
return type(v) == "table"
|
return type(v) == "table"
|
||||||
end):map(function(v)
|
end):map(function(v)
|
||||||
v.colour = G.C.BLACK
|
v.colour = G.C.DARK_EDITION
|
||||||
return v
|
return v
|
||||||
end):table()
|
end):values():table()
|
||||||
)
|
)
|
||||||
end,
|
end,
|
||||||
|
in_pool = function()
|
||||||
|
return not not f(G.playing_cards):concat(G.jokers.cards):any(is_frozen)
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,8 @@ SMODS.Atlas {
|
||||||
path = "icon.png",
|
path = "icon.png",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SMODS.current_mod.qol = qol
|
||||||
|
|
||||||
function SMODS.current_mod.config_tab()
|
function SMODS.current_mod.config_tab()
|
||||||
return {
|
return {
|
||||||
n = G.UIT.ROOT,
|
n = G.UIT.ROOT,
|
||||||
|
|
@ -58,7 +60,6 @@ function SMODS.current_mod.config_tab()
|
||||||
nodes = {
|
nodes = {
|
||||||
toggle "illusion_seal",
|
toggle "illusion_seal",
|
||||||
toggle "no_wild_debuff",
|
toggle "no_wild_debuff",
|
||||||
toggle "no_highlight_limit",
|
|
||||||
_G["Talisman"] and toggle "harsh_ante_scaling",
|
_G["Talisman"] and toggle "harsh_ante_scaling",
|
||||||
G.P_CENTERS.c_Bakery_Scribe and toggle "scribable_basket",
|
G.P_CENTERS.c_Bakery_Scribe and toggle "scribable_basket",
|
||||||
toggle "equinox_assist",
|
toggle "equinox_assist",
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,9 @@
|
||||||
local f, q = unpack(... or require "lib.shared")
|
local f, q = unpack(... or require "lib.shared")
|
||||||
|
|
||||||
SMODS.Joker:take_ownership("joker", {cost = 1}, true)
|
SMODS.Joker:take_ownership("joker", {cost = 1}, true)
|
||||||
local orig_can_highlight = CardArea.can_highlight
|
|
||||||
local orig_set_debuff = Card.set_debuff
|
local orig_set_debuff = Card.set_debuff
|
||||||
local orig_highlight = Card.highlight
|
|
||||||
local orig_copy_card = copy_card
|
local orig_copy_card = copy_card
|
||||||
|
|
||||||
function CardArea:can_highlight(...)
|
|
||||||
if self ~= G.consumeables or not SMODS.Mods.Roland.config.no_highlight_limit then
|
|
||||||
return orig_can_highlight(self, ...)
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Allows more flexibility when using the Escapey joker to delete specific consumables.
|
|
||||||
self.config.highlighted_limit = 1 / 0
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
|
|
||||||
function Card:set_debuff(...)
|
function Card:set_debuff(...)
|
||||||
if SMODS.get_enhancements(self).m_wild and SMODS.Mods.Roland.config.no_wild_debuff then
|
if SMODS.get_enhancements(self).m_wild and SMODS.Mods.Roland.config.no_wild_debuff then
|
||||||
self.debuff = false
|
self.debuff = false
|
||||||
|
|
@ -24,14 +12,6 @@ function Card:set_debuff(...)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Card:highlight(is_highlighted, ...)
|
|
||||||
self.highlighted = is_highlighted
|
|
||||||
|
|
||||||
if not G.CONTROLLER.HID.controller or not SMODS.Mods.Roland.config.no_highlight_limit then
|
|
||||||
return orig_highlight(self, is_highlighted, ...)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local orig_use_consumeable = Card.use_consumeable
|
local orig_use_consumeable = Card.use_consumeable
|
||||||
|
|
||||||
function Card:use_consumeable(area, copier, ...)
|
function Card:use_consumeable(area, copier, ...)
|
||||||
|
|
|
||||||