diff --git a/assets/1x/joker.png b/assets/1x/joker.png index 2cc3b9d..2c1148a 100644 Binary files a/assets/1x/joker.png and b/assets/1x/joker.png differ diff --git a/assets/2x/back.png b/assets/2x/back.png index 64e5bc3..a927c0b 100644 Binary files a/assets/2x/back.png and b/assets/2x/back.png differ diff --git a/assets/2x/blind.png b/assets/2x/blind.png index ab59320..c18e334 100644 Binary files a/assets/2x/blind.png and b/assets/2x/blind.png differ diff --git a/assets/2x/charm.png b/assets/2x/charm.png index 2510425..5d72119 100644 Binary files a/assets/2x/charm.png and b/assets/2x/charm.png differ diff --git a/assets/2x/icon.png b/assets/2x/icon.png index 8482448..b835780 100644 Binary files a/assets/2x/icon.png and b/assets/2x/icon.png differ diff --git a/assets/2x/joker.png b/assets/2x/joker.png index d9aa389..0e35d2b 100644 Binary files a/assets/2x/joker.png and b/assets/2x/joker.png differ diff --git a/assets/2x/seal.png b/assets/2x/seal.png index 3820b46..47e02c4 100644 Binary files a/assets/2x/seal.png and b/assets/2x/seal.png differ diff --git a/assets/2x/spectral.png b/assets/2x/spectral.png index 9158218..097ecec 100644 Binary files a/assets/2x/spectral.png and b/assets/2x/spectral.png differ diff --git a/assets/sounds/nilly.ogg b/assets/sounds/nilly.ogg new file mode 100644 index 0000000..2c47818 Binary files /dev/null and b/assets/sounds/nilly.ogg differ diff --git a/localization/en-us.lua b/localization/en-us.lua index 364f321..100f9b5 100644 --- a/localization/en-us.lua +++ b/localization/en-us.lua @@ -229,6 +229,14 @@ return { name = "Ms. Joker", text = {"{C:chips}+#1#{} Chips"}, }, + j_Roland_nilly = { + name = "Nilly", + text = { + "Toggleable {X:mult,C:white}X0{} Mult", + "{C:inactive}(Currently {C:attention}#1#{C:inactive})", + "{C:inactive,s:0.75,E:1}Wait... what?", + }, + }, j_Roland_oops = { name = "Oops! All 7s", text = { @@ -389,6 +397,8 @@ return { }, v_dictionary = { b_Roland_bye = "Bye!", + b_Roland_disabled = "Disabled", + b_Roland_enabled = "Enabled", b_Roland_comma = ", ", b_Roland_debuffed = "DEBUFFED", b_Roland_entering_shop = "Entering shop!", @@ -404,6 +414,7 @@ return { b_Roland_no_wild_debuff = "No wild card debuffs", b_Roland_na = "N/A", b_Roland_of = " of ", + b_Roland_toggle = "TOGGLE", }, labels = { Roland_frozen = "Frozen", diff --git a/manifest.json b/manifest.json index 858b23f..7ba5379 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "author": [ "Emik" ], - "version": "2.2.6", + "version": "2.2.7", "badge_colour": "8BE9FD", "main_file": "src/main.lua", "badge_text_colour": "44475A", @@ -17,6 +17,6 @@ "dependencies": [ "Steamodded (>=1.*)", "Lovely (>=0.6)", - "Bakery (>=1.3.2~*)" + "Bakery (>=0.1.26~*)" ] } \ No newline at end of file diff --git a/src/joker.lua b/src/joker.lua index 04a0935..03532eb 100644 --- a/src/joker.lua +++ b/src/joker.lua @@ -19,6 +19,12 @@ local joker = (function() tbl.artist = tbl.artist and "Roland_" .. tbl.artist or nil tbl.soul_pos = tbl.soul_pos and inc() or nil tbl.sinis = tbl.sinis and inc() or nil + + if ((tbl.config or {}).extra or {}).flipped ~= nil then + tbl.config.extra.front_pos = tbl.pos + tbl.config.extra.back_pos = inc() + end + local joker = SMODS.Joker(tbl) q(function() @@ -89,6 +95,11 @@ SMODS.Atlas { py = 95, } +SMODS.Sound { + key = "nilly", + path = "nilly.ogg", +} + joker { key = "escapey", pronouns = "they_them", @@ -123,6 +134,9 @@ joker { }, } end, + calculate = function(self, card, context) + return context.forcetrigger and self.proc(card) or nil + end, Bakery_can_use = function(self, card) return not card.debuff and u() and (self.exchangable() or self.fusable(card)) end, @@ -134,9 +148,6 @@ joker { "b_Roland_fuse" or "b_Roland_escape"), } end, - calculate = function(self, card, context) - return context.forcetrigger and self.proc(card) or nil - end, Bakery_use_joker = function(self, card) if card.debuff then return @@ -392,7 +403,7 @@ joker { return end - for _ = 1, extra.times do + f(extra.times):each(function() G.playing_card = (G.playing_card or 0) + 1 G.deck.config.card_limit = G.deck.config.card_limit + 1 local chosen = pseudorandom_element(scored_cards, pseudoseed "Roland_trimino") @@ -402,7 +413,7 @@ joker { copy:start_materialize() table.insert(copied, copy) table.insert(G.playing_cards, copy) - end + end) SMODS.calculate_effect({{message = localize "k_copied_ex", message_card = card}}, card) playing_card_joker_effects(copied) @@ -806,6 +817,50 @@ joker { end, } +joker { + key = "nilly", + pronouns = "any_all", + config = {extra = {flipped = false}}, + cost = 0, + rarity = 3, + eternal_compat = true, + blueprint_compat = true, + perishable_compat = true, + loc_vars = function(_, _, card) + return { + vars = {localize { + type = "variable", + key = card.ability.extra.flipped and "b_Roland_enabled" or "b_Roland_disabled", + }}, + } + end, + inject = function(...) + SMODS.Joker.inject(...) + Bakery_API.double_sided_jokers.j_Roland_nilly = true + end, + calculate = function(_, card, context) + if (not context.joker_main or not card.ability.extra.flipped) and not context.forcetrigger then + return + end + + mult = mod_mult(0) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + return {sound = "Roland_nilly", message = "0X " .. localize "k_mult", colour = G.C.MULT, card = card} + end, + Bakery_can_use = function(_, card) + return not card.debuff + end, + Bakery_use_button_text = function(_, card) + return localize { + type = "variable", + key = card.debuff and "b_Roland_debuffed" or "b_Roland_toggle", + } + end, + Bakery_use_joker = function(_, card) + local _ = card.debuff or Bakery_API.flip_double_sided(card) + end, +} + joker { key = "arctic", pronouns = "it_its", diff --git a/src/spectral.lua b/src/spectral.lua index 295456b..491dfe0 100644 --- a/src/spectral.lua +++ b/src/spectral.lua @@ -107,7 +107,7 @@ spectral { f(cards):take(card.ability.extra.amount):each(function(v) local seal - for _ = 1, 31 do + for _ = 1, 64 do seal = SMODS.poll_seal {guaranteed = true} if seal ~= "Roland_glass" then @@ -177,12 +177,12 @@ local void = spectral { f(cards):each(destroy) f(G.jokers.cards):each(calculate_joker) - for _ = 1, card.ability.extra.amount do + f(card.ability.extra.amount):each(function() local cryptid = create_card(nil, G.consumeables, nil, nil, nil, nil, "c_cryptid", "void") cryptid:set_edition({negative = true}, true) cryptid:add_to_deck() G.consumeables:emplace(cryptid) - end + end) end play_sound("Roland_void", 1, 0.7)