Add sell value on merge, handle consumables and tags separately

This commit is contained in:
Emik 2026-01-16 20:49:30 +01:00
parent 13257d91b3
commit 57344e1f00
Signed by: emik
GPG key ID: 6B0CD72A5E503BDF
3 changed files with 54 additions and 36 deletions

View file

@ -14,7 +14,7 @@ return {
j_Roland_escapey = { j_Roland_escapey = {
name = "Escapey", name = "Escapey",
text = { text = {
"Destroy {C:attention}tags{} and {C:attention}non-selected", "Destroy {C:attention}tags{} or {C:attention}non-selected",
"{C:attention}consumables{} on use. Level up", "{C:attention}consumables{} on use. Level up",
"the {C:planet}most played hand{} by {C:planet}#1#{}", "the {C:planet}most played hand{} by {C:planet}#1#{}",
"for each destroyed object", "for each destroyed object",
@ -23,7 +23,7 @@ return {
"#3#{C:inactive,s:0.75,E:1}#4#{C:red,s:1.5,E:1}#5#", "#3#{C:inactive,s:0.75,E:1}#4#{C:red,s:1.5,E:1}#5#",
"#6#{C:blue,E:1}#7#{}#8#{C:inactive,s:0.75,E:1}#9#{C:red,s:1.5,E:1}#10#", "#6#{C:blue,E:1}#7#{}#8#{C:inactive,s:0.75,E:1}#9#{C:red,s:1.5,E:1}#10#",
}, },
merge = {"Since no objects apply, merge", "with other ", " jokers"}, merge = {"Since no objects apply, fuse", "with other ", " jokers"},
quotes = { quotes = {
marble = {{"there is no escape..."}}, marble = {{"there is no escape..."}},
normal = { normal = {

View file

@ -6,7 +6,7 @@
"author": [ "author": [
"Emik" "Emik"
], ],
"version": "1.4.4", "version": "1.4.5",
"badge_colour": "8BE9FD", "badge_colour": "8BE9FD",
"main_file": "src/main.lua", "main_file": "src/main.lua",
"badge_text_colour": "44475A", "badge_text_colour": "44475A",

View file

@ -87,6 +87,7 @@ SMODS.Joker {
G.escapey_debugger(F.reduce(context, "", function(acc, _, next) return acc .. ", " .. next end, pairs):sub(2)) G.escapey_debugger(F.reduce(context, "", function(acc, _, next) return acc .. ", " .. next end, pairs):sub(2))
end end
end, end,
---@param card Card
Bakery_can_use = function(_, card) Bakery_can_use = function(_, card)
return not card.debuff and can_use() and ( return not card.debuff and can_use() and (
#G.GAME.tags ~= 0 or #G.GAME.tags ~= 0 or
@ -94,27 +95,40 @@ SMODS.Joker {
F.any(F.filter(G.jokers.cards, is_mergeable_with(card))) F.any(F.filter(G.jokers.cards, is_mergeable_with(card)))
) )
end, end,
---@param card Card
Bakery_use_button_text = function(_, card) Bakery_use_button_text = function(_, card)
return card.debuff and "DEBUFFED" or if card.debuff then
((#G.GAME.tags == 0 and not return "DEBUFFED"
F.any(G.consumeables.cards, destructible) and end
F.any(F.filter(G.jokers.cards, is_mergeable_with(card)))) and "MERGE" or "ESCAPE")
return #G.GAME.tags == 0 and F.count(G.consumeables.cards, destructible) == 0 and
F.any(F.filter(G.jokers.cards, is_mergeable_with(card))) and "FUSE" or "ESCAPE"
end, end,
---@param card Card
Bakery_use_joker = function(_, card) Bakery_use_joker = function(_, card)
local hand, object_count = common_hand(), F.count(F.filter(G.consumeables.cards, destructible)) + #G.GAME.tags if card.debuff then
return
end
local consumables = F.filter(G.consumeables.cards, destructible)
local consumable_count = F.count(consumables)
local object_count = consumable_count + #G.GAME.tags
if object_count == 0 then if object_count == 0 then
local sum = 0 local level_sum, sell_sum = 0, 0
F.foreach( F.foreach(
F.filter(G.jokers.cards, is_mergeable_with(card)), F.filter(G.jokers.cards, is_mergeable_with(card)),
function(v) function(v)
sum = sum + v.ability.extra.level_up_by * (v.getEvalQty and v:getEvalQty() or 1) level_sum = level_sum + v.ability.extra.level_up_by * (v.getEvalQty and v:getEvalQty() or 1)
sell_sum = sell_sum + v.sell_cost * (v.getEvalQty and v:getEvalQty() or 1)
v:start_dissolve({HEX("57ecab")}, nil, 1.6) v:start_dissolve({HEX("57ecab")}, nil, 1.6)
end end
) )
card.ability.extra.level_up_by = card.ability.extra.level_up_by + sum card.ability.extra.level_up_by = card.ability.extra.level_up_by + level_sum
card.sell_cost = card.sell_cost + sell_sum
return
end end
local function update(name, chip, mul, lv, notif, snd, vol, pit, de) local function update(name, chip, mul, lv, notif, snd, vol, pit, de)
@ -151,6 +165,8 @@ SMODS.Joker {
end end
end end
local hand = common_hand()
if hand == "all" or hand == "allhands" or hand == "all_hands" then if hand == "all" or hand == "allhands" or hand == "all_hands" then
update(localize("k_all_hands"), "...", "...", "") update(localize("k_all_hands"), "...", "...", "")
elseif G.GAME.hands[hand or "NO_HAND_SPECIFIED"] then elseif G.GAME.hands[hand or "NO_HAND_SPECIFIED"] then
@ -162,13 +178,7 @@ SMODS.Joker {
) )
end end
F.foreach( if consumable_count == 0 then
F.filter(G.consumeables.cards, destructible),
function(v)
v:start_dissolve({ HEX("57ecab") }, nil, 1.6)
end
)
local trigger = #G.GAME.tags >= 30 and "immediate" or "before" local trigger = #G.GAME.tags >= 30 and "immediate" or "before"
local delay = #G.GAME.tags >= 30 and 0 or 1 / #G.GAME.tags local delay = #G.GAME.tags >= 30 and 0 or 1 / #G.GAME.tags
@ -178,6 +188,14 @@ SMODS.Joker {
G.E_MANAGER:add_event(Event {trigger = trigger, blocking = #G.GAME.tags < 30, delay = delay, func = fast_delete(v)}) G.E_MANAGER:add_event(Event {trigger = trigger, blocking = #G.GAME.tags < 30, delay = delay, func = fast_delete(v)})
end end
) )
else
F.foreach(
consumables,
function(v)
v:start_dissolve({HEX("57ecab")}, nil, 1.6)
end
)
end
level_up_hand(card, hand, nil, object_count * card.ability.extra.level_up_by) level_up_hand(card, hand, nil, object_count * card.ability.extra.level_up_by)