diff --git a/assets/sounds/frozen1.ogg b/assets/sounds/frozen1.ogg new file mode 100644 index 0000000..ca3e505 Binary files /dev/null and b/assets/sounds/frozen1.ogg differ diff --git a/assets/sounds/frozen2.ogg b/assets/sounds/frozen2.ogg new file mode 100644 index 0000000..7a3755e Binary files /dev/null and b/assets/sounds/frozen2.ogg differ diff --git a/assets/sounds/frozen.ogg b/assets/sounds/frozen3.ogg similarity index 100% rename from assets/sounds/frozen.ogg rename to assets/sounds/frozen3.ogg diff --git a/assets/sounds/frozen4.ogg b/assets/sounds/frozen4.ogg new file mode 100644 index 0000000..cb4a978 Binary files /dev/null and b/assets/sounds/frozen4.ogg differ diff --git a/assets/sounds/frozen_click.ogg b/assets/sounds/frozen_click.ogg new file mode 100644 index 0000000..ca09b57 Binary files /dev/null and b/assets/sounds/frozen_click.ogg differ diff --git a/src/edition.lua b/src/edition.lua index bfb247d..3c58ea4 100644 --- a/src/edition.lua +++ b/src/edition.lua @@ -5,10 +5,14 @@ SMODS.Shader { path = "frozen.fs", } -SMODS.Sound { - key = "frozen", - path = "frozen.ogg", -} +---@param suffix string +local function frozen_sound(suffix) + local key = "frozen" .. suffix + return SMODS.Sound {key = key, path = key .. ".ogg"} +end + +frozen_sound "_click" +local frozen_sounds = f(4):map(frozen_sound):map("key"):table() local needs_chip_mult_override = { Bull = true, @@ -71,7 +75,7 @@ SMODS.Edition { key = "frozen", shader = "frozen", pools = {Joker = true}, - sound = {sound = "Roland_frozen", per = 1.6, vol = 0.8}, + sound = {sound = "Roland_frozen", per = 1, vol = 0.8}, weight = 8, extra_cost = 4, in_shop = true, @@ -80,7 +84,6 @@ SMODS.Edition { freeze(card) end, on_remove = function(card) - freeze(card) card.Roland_frozen_ability = nil end, get_weight = function(self) @@ -88,6 +91,31 @@ SMODS.Edition { end, } +local orig_play_sound = play_sound + +function play_sound(sound, pitch, ...) + if sound ~= "Roland_frozen" and sound ~= "Roland_frozen_click" then + return orig_play_sound(sound, pitch, ...) + end + + local overriden_sound = sound == "Roland_frozen" and + pseudorandom_element(frozen_sounds, pseudoseed "Roland_frozen") or + sound + + local overriden_pitch = pseudorandom(pseudoseed "Roland_frozen_pitch") / 2 + 1.3 + return orig_play_sound(overriden_sound, overriden_pitch, ...) +end + +local orig_click = Card.click + +function Card:click(...) + if self.edition and self.edition.Roland_frozen then + play_sound("Roland_frozen_click", nil, 0.6) + end + + return orig_click(self, ...) +end + local orig_calculate_joker = Card.calculate_joker ---@param self Card|{Roland_frozen_ability?: table} diff --git a/src/spectral.lua b/src/spectral.lua index 951227d..e1b56a4 100644 --- a/src/spectral.lua +++ b/src/spectral.lua @@ -54,7 +54,6 @@ spectral { delay = 0.1, func = function() v:set_edition {negative = true} - v:juice_up(0.5, 0.5) end, } end) @@ -77,7 +76,9 @@ spectral { return {vars = {card.ability.extra.amount}} end, can_use = function(_, card) - return u() and card.ability.extra.amount == #G.jokers.highlighted + #Bakery_API.get_highlighted() + return u() and f(G.jokers.highlighted):concat(Bakery_API.get_highlighted()):count(function(v) + return not v.edition + end) == card.ability.extra.amount end, use = function() f(G.jokers.highlighted):concat(Bakery_API.get_highlighted()):each(function(v) @@ -85,7 +86,6 @@ spectral { delay = 0.1, func = function() v:set_edition {Roland_frozen = true} - v:juice_up(1, 1) end, } end)