Skip to content

Commit d8c2bbb

Browse files
committed
exotic scaling detection
1 parent 641828b commit d8c2bbb

File tree

2 files changed

+131
-50
lines changed

2 files changed

+131
-50
lines changed

items/exotic.lua

Lines changed: 103 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -320,14 +320,19 @@ local exponentia = {
320320
end
321321
if context.forcetrigger then
322322
card.ability.extra.Emult = card.ability.extra.Emult + card.ability.extra.Emult_mod
323+
local msg = SMODS.scale_card(card, {
324+
ref_table = card.ability.extra,
325+
ref_value = "Emult",
326+
scalar_value = "Emult_mod"
327+
})
323328
return {
324-
message = localize({
329+
message = not msg and localize({
325330
type = "variable",
326331
key = "a_powmult",
327332
vars = {
328333
number_format(card.ability.extra.Emult),
329334
},
330-
}),
335+
}) or (type(msg) == "string" and msg) or nil,
331336
Emult_mod = lenient_bignum(card.ability.extra.Emult),
332337
colour = G.C.DARK_EDITION,
333338
}
@@ -367,13 +372,20 @@ local exponentia = {
367372
for _, v in pairs(find_joker("cry-Exponentia")) do
368373
local old = v.ability.extra.Emult
369374
v.ability.extra.Emult = lenient_bignum(to_big(v.ability.extra.Emult) + v.ability.extra.Emult_mod)
370-
card_eval_status_text(v, "extra", nil, nil, nil, {
371-
message = localize({
372-
type = "variable",
373-
key = "a_powmult",
374-
vars = { number_format(v.ability.extra.Emult) },
375-
}),
375+
local msg = SMODS.scale_card(card, {
376+
ref_table = card.ability.extra,
377+
ref_value = "Emult",
378+
scalar_value = "Emult_mod"
376379
})
380+
if not msg or type(msg) == "string" then
381+
card_eval_status_text(v, "extra", nil, nil, nil, {
382+
message = localize({
383+
type = "variable",
384+
key = "a_powmult",
385+
vars = { number_format(v.ability.extra.Emult) },
386+
}),
387+
})
388+
end
377389
end
378390
end
379391
return ret
@@ -645,14 +657,21 @@ local crustulum = {
645657
calculate = function(self, card, context)
646658
if context.reroll_shop and not context.blueprint then
647659
card.ability.extra.chips = lenient_bignum(to_big(card.ability.extra.chips) + card.ability.extra.chip_mod)
648-
card_eval_status_text(card, "extra", nil, nil, nil, {
649-
message = localize({
650-
type = "variable",
651-
key = "a_chips",
652-
vars = { number_format(card.ability.extra.chips) },
653-
}),
654-
colour = G.C.CHIPS,
660+
local msg = SMODS.scale_card(card, {
661+
ref_table = card.ability.extra,
662+
ref_value = "chips",
663+
scalar_value = "chip_mod"
655664
})
665+
if not msg or type(msg) == "string" then
666+
card_eval_status_text(card, "extra", nil, nil, nil, {
667+
message = msg or localize({
668+
type = "variable",
669+
key = "a_chips",
670+
vars = { number_format(card.ability.extra.chips) },
671+
}),
672+
colour = G.C.CHIPS,
673+
})
674+
end
656675
return nil, true
657676
end
658677
if context.joker_main and to_big(card.ability.extra.chips) > to_big(0) then
@@ -667,12 +686,17 @@ local crustulum = {
667686
end
668687
if context.forcetrigger then
669688
card.ability.extra.chips = lenient_bignum(to_big(card.ability.extra.chips) + card.ability.extra.chip_mod)
689+
local msg = SMODS.scale_card(card, {
690+
ref_table = card.ability.extra,
691+
ref_value = "chips",
692+
scalar_value = "chip_mod"
693+
})
670694
return {
671-
message = localize({
695+
message = not msg and localize({
672696
type = "variable",
673697
key = "a_chips",
674698
vars = { number_format(card.ability.extra.chips) },
675-
}),
699+
}) or (type(msg) == "string" and msg) or nil,
676700
chip_mod = lenient_bignum(card.ability.extra.chips),
677701
}
678702
end
@@ -737,15 +761,19 @@ local primus = {
737761
end
738762
end
739763
if check then
740-
card.ability.extra.Emult =
741-
lenient_bignum(to_big(card.ability.extra.Emult) + card.ability.extra.Emult_mod)
764+
card.ability.extra.Emult = lenient_bignum(to_big(card.ability.extra.Emult) + card.ability.extra.Emult_mod)
765+
local msg = SMODS.scale_card(card, {
766+
ref_table = card.ability.extra,
767+
ref_value = "Emult",
768+
scalar_value = "Emult_mod"
769+
})
742770
card.children.floating_sprite:set_sprite_pos({ x = 8, y = 6 })
743-
return {
744-
card_eval_status_text(card, "extra", nil, nil, nil, {
745-
message = localize("k_upgrade_ex"),
771+
if not msg or type(msg) == "string" then
772+
return {
773+
message = msg or localize("k_upgrade_ex"),
746774
colour = G.C.DARK_EDITION,
747-
}),
748-
}
775+
}
776+
end
749777
end
750778
end
751779
if context.joker_main and (to_big(card.ability.extra.Emult) > to_big(1)) then
@@ -767,14 +795,19 @@ local primus = {
767795
end
768796
if context.forcetrigger then
769797
card.ability.extra.Emult = lenient_bignum(to_big(card.ability.extra.Emult) + card.ability.extra.Emult_mod)
798+
local msg = SMODS.scale_card(card, {
799+
ref_table = card.ability.extra,
800+
ref_value = "Emult",
801+
scalar_value = "Emult_mod"
802+
})
770803
return {
771-
message = localize({
804+
message = not msg and localize({
772805
type = "variable",
773806
key = "a_powmult",
774807
vars = {
775808
number_format(card.ability.extra.Emult),
776809
},
777-
}),
810+
}) or (type(msg) == "string" and msg) or nil,
778811
Emult_mod = lenient_bignum(card.ability.extra.Emult),
779812
colour = G.C.DARK_EDITION,
780813
}
@@ -819,10 +852,17 @@ local scalae = {
819852
or context.forcetrigger
820853
then
821854
card.ability.extra.scale = lenient_bignum(to_big(card.ability.extra.scale) + card.ability.extra.scale_mod)
822-
return {
823-
message = localize("k_upgrade_ex"),
824-
colour = G.C.DARK_EDITION,
825-
}
855+
local msg = SMODS.scale_card(card, {
856+
ref_table = card.ability.extra,
857+
ref_value = "scale",
858+
scalar_value = "scale_mod"
859+
})
860+
if not msg or type(msg) == "string" then
861+
return {
862+
message = msg or localize("k_upgrade_ex"),
863+
colour = G.C.DARK_EDITION,
864+
}
865+
end
826866
end
827867
end,
828868
calc_scaling = function(self, card, other, current_scaling, current_scalar, args)
@@ -930,8 +970,12 @@ local stella_mortis = {
930970
quaota = planet_to_destroy.ability.immutable and planet_to_destroy.ability.immutable.overflow_amount
931971
end
932972
planet_to_destroy.getting_sliced = true
933-
card.ability.extra.Emult =
934-
lenient_bignum(card.ability.extra.Emult + to_big(card.ability.extra.Emult_mod) * quota)
973+
card.ability.extra.Emult = lenient_bignum(card.ability.extra.Emult + to_big(card.ability.extra.Emult_mod) * quota)
974+
local msg = SMODS.scale_card(card, {
975+
ref_table = card.ability.extra,
976+
ref_value = "Emult",
977+
scalar_value = "Emult_mod"
978+
})
935979
G.E_MANAGER:add_event(Event({
936980
func = function()
937981
(context.blueprint_card or card):juice_up(0.8, 0.8)
@@ -940,9 +984,9 @@ local stella_mortis = {
940984
end,
941985
}))
942986
planet_to_destroy.dissolve = 0 --timing issues related to crossmod stuff
943-
if not (context.blueprint_card or self).getting_sliced then
987+
if not (context.blueprint_card or self).getting_sliced and (not msg or type(msg) == "string") then
944988
card_eval_status_text((context.blueprint_card or card), "extra", nil, nil, nil, {
945-
message = localize({
989+
message = msg or localize({
946990
type = "variable",
947991
key = "a_powmult",
948992
vars = {
@@ -1314,9 +1358,14 @@ local energia = {
13141358
local value = #G.GAME.tags or 0
13151359
local t = to_number(math.min(card.ability.immutable.max_tags - value, card.ability.extra.tags))
13161360
card.ability.extra.tags = lenient_bignum(to_big(card.ability.extra.tags) + card.ability.extra.tag_mod)
1317-
if t > 0 then
1361+
local msg = SMODS.scale_card(card, {
1362+
ref_table = card.ability.extra,
1363+
ref_value = "tags",
1364+
scalar_value = "tag_mod"
1365+
})
1366+
if t > 0 and (not msg or type(msg) == "string") then
13181367
card_eval_status_text(card, "extra", nil, nil, nil, {
1319-
message = localize({
1368+
message = msg or localize({
13201369
type = "variable",
13211370
key = card.ability.extra.tags == 1 and "a_tag" or "a_tags",
13221371
vars = { t },
@@ -1328,6 +1377,11 @@ local energia = {
13281377
end
13291378
if context.forcetrigger then
13301379
card.ability.extra.tags = lenient_bignum(to_big(card.ability.extra.tags) + card.ability.extra.tag_mod)
1380+
local msg = SMODS.scale_card(card, {
1381+
ref_table = card.ability.extra,
1382+
ref_value = "tags",
1383+
scalar_value = "tag_mod"
1384+
})
13311385
end
13321386
end,
13331387
cry_credits = {
@@ -1479,12 +1533,24 @@ local duplicare = {
14791533
)
14801534
then
14811535
card.ability.extra.Xmult = lenient_bignum(to_big(card.ability.extra.Xmult) + card.ability.extra.Xmult_mod)
1482-
card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_upgrade_ex") })
1536+
local msg = SMODS.scale_card(card, {
1537+
ref_table = card.ability.extra,
1538+
ref_value = "Xmult",
1539+
scalar_value = "Xmult_mod"
1540+
})
1541+
if not msg or type(msg) == "string" then
1542+
card_eval_status_text(card, "extra", nil, nil, nil, { message = msg or localize("k_upgrade_ex") })
1543+
end
14831544
end
14841545
if (context.joker_main and (to_big(card.ability.extra.Xmult) > to_big(1))) or context.forcetrigger then
14851546
if context.forcetrigger then
14861547
card.ability.extra.Xmult =
14871548
lenient_bignum(to_big(card.ability.extra.Xmult) + card.ability.extra.Xmult_mod)
1549+
local msg = SMODS.scale_card(card, {
1550+
ref_table = card.ability.extra,
1551+
ref_value = "Xmult",
1552+
scalar_value = "Xmult_mod"
1553+
})
14881554
end
14891555
return {
14901556
message = localize({

lib/cross-mod.lua

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,38 @@ SMODS.Joker:take_ownership("green_joker", {
1616
local prev_mult = card.ability.mult
1717
card.ability.mult = math.max(0, card.ability.mult - card.ability.extra)
1818
if card.ability.mult ~= prev_mult then
19-
return {
20-
message = localize({
21-
type = "variable",
22-
key = "a_mult_minus",
23-
vars = { card.ability.extra },
24-
}),
25-
colour = G.C.RED,
26-
card = card,
27-
}
19+
local msg = SMODS.scale_card(card, {
20+
ref_table = card.ability,
21+
ref_value = "mult",
22+
scalar_value = "extra",
23+
operation = "-"
24+
})
25+
if not msg or type(msg) == "string" then
26+
return {
27+
message = msg or localize({
28+
type = "variable",
29+
key = "a_mult_minus",
30+
vars = { card.ability.extra },
31+
}),
32+
colour = G.C.RED,
33+
card = card,
34+
}
35+
end
2836
end
2937
end
3038
if context.cardarea == G.jokers and context.before and not context.blueprint then
3139
card.ability.mult = card.ability.mult + card.ability.extra
32-
return {
33-
card = card,
34-
message = localize({ type = "variable", key = "a_mult", vars = { card.ability.extra } }),
35-
}
40+
local msg = SMODS.scale_card(card, {
41+
ref_table = card.ability,
42+
ref_value = "mult",
43+
scalar_value = "extra"
44+
})
45+
if not msg or type(msg) == "string" then
46+
return {
47+
card = card,
48+
message = localize({ type = "variable", key = "a_mult", vars = { card.ability.extra } }),
49+
}
50+
end
3651
end
3752
if context.joker_main then
3853
return {

0 commit comments

Comments
 (0)