Skip to content

Commit a36f58f

Browse files
Trade Forcetrigger fix
- Should hopefully fix softlocking issues with trade being forcetriggered
1 parent 5004d79 commit a36f58f

1 file changed

Lines changed: 72 additions & 1 deletion

File tree

items/spectral.lua

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,78 @@ local trade = {
434434
end,
435435
demicoloncompat = true,
436436
force_use = function(self, card, area)
437-
self:use(card, area)
437+
--self:use(card, area)
438+
local loc_name = {}
439+
local usable_vouchers = {}
440+
for k, v in ipairs(G.vouchers.cards) do
441+
local can_use = true
442+
for kk, vv in ipairs(G.vouchers.cards) do
443+
local center = G.P_CENTERS[vv.config.center.key]
444+
if center.requires then
445+
for _, vvv in pairs(center.requires) do
446+
if vvv == v.config.center.key then
447+
can_use = false
448+
break
449+
end
450+
end
451+
end
452+
end
453+
if SMODS.is_eternal(v) then
454+
can_use = false
455+
end
456+
if can_use then
457+
usable_vouchers[#usable_vouchers + 1] = v
458+
end
459+
end
460+
local unredeemed_voucher = pseudorandom_element(usable_vouchers, pseudoseed("cry_trade"))
461+
if not unredeemed_voucher then
462+
return
463+
end
464+
loc_name[1] = unredeemed_voucher.config.center.key
465+
unredeemed_voucher:unapply_to_run()
466+
G.E_MANAGER:add_event(Event({
467+
func = function()
468+
Cryptid.update_used_vouchers()
469+
return true
470+
end,
471+
}))
472+
G.E_MANAGER:add_event(Event({
473+
trigger = "after",
474+
delay = 0,
475+
func = function()
476+
unredeemed_voucher:start_dissolve()
477+
return true
478+
end,
479+
}))
480+
for i = 1, 2 do
481+
local _pool = get_current_pool("Voucher", nil, nil, nil, true)
482+
local center = pseudorandom_element(_pool, pseudoseed("cry_trade_redeem"))
483+
local it = 1
484+
while center == "UNAVAILABLE" do
485+
it = it + 1
486+
center = pseudorandom_element(_pool, pseudoseed("cry_trade_redeem_resample" .. it))
487+
end
488+
loc_name[i + 1] = center
489+
if not G.GAME.used_vouchers[center] then
490+
G.GAME.used_vouchers[center] = true
491+
end
492+
Card.apply_to_run(nil, G.P_CENTERS[center])
493+
end
494+
print(localize({
495+
type = "variable",
496+
key = "cry_trade_remove",
497+
vars = { localize({ type = "name_text", set = "Voucher", key = loc_name[1] }) },
498+
}))
499+
print(localize({
500+
type = "variable",
501+
key = "cry_trade_add",
502+
vars = { localize({ type = "name_text", set = "Voucher", key = loc_name[2] }) },
503+
}))
504+
print(localize({
505+
type = "variable",
506+
key = "cry_trade_add",
507+
vars = { localize({ type = "name_text", set = "Voucher", key = loc_name[3] }) },
508+
}))
438509
end,
439510
}
440511
local replica = {

0 commit comments

Comments
 (0)