Add new joker, buff Snowsquall

This commit is contained in:
Emik 2026-06-17 00:17:42 +02:00
parent c48fd5454e
commit 03fef3d2ce
Signed by: emik
GPG key ID: 6B0CD72A5E503BDF
16 changed files with 57 additions and 10 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 KiB

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

View file

@ -165,6 +165,14 @@ return {
"if it is {C:dark_edition}Frozen", "if it is {C:dark_edition}Frozen",
}, },
}, },
j_Roland_cerulean = {
name = "Cerulean Bell",
text = {
"{X:mult,C:white}X#1#{} Mult",
"All other {C:attention}Jokers {}cannot",
"be selected or dragged",
},
},
j_Roland_crimson = { j_Roland_crimson = {
name = "Crimson Heart", name = "Crimson Heart",
text = { text = {

View file

@ -3,7 +3,7 @@
"id": "Roland", "id": "Roland",
"name": "Roland", "name": "Roland",
"prefix": "Roland", "prefix": "Roland",
"version": "2.8.35", "version": "2.8.36",
"badge_colour": "8BE9FD", "badge_colour": "8BE9FD",
"display_name": "Roland", "display_name": "Roland",
"main_file": "src/main.lua", "main_file": "src/main.lua",

View file

@ -1,13 +1,23 @@
local f, q = unpack(... or require "lib.shared") local f, q = unpack(... or require "lib.shared")
local atlas = SMODS.Atlas {
key = "joker",
path = "joker.png",
px = 71,
py = 95,
}
local negative = {key = "e_negative_consumable", set = "Edition", config = {extra = 1}} local negative = {key = "e_negative_consumable", set = "Edition", config = {extra = 1}}
local joker = (function() local joker = (function()
atlas:inject()
local z = 0 local z = 0
local row
---@return {x: number, y: number} ---@return {x: number, y: number}
local function inc() local function inc()
local ret = {x = z % 6, y = math.floor(z / 6)} row = row or atlas.image_data:getWidth() / atlas.px / G.SETTINGS.GRAPHICS.texture_scaling
local ret = {x = z % row, y = math.floor(z / row)}
z = z + 1 z = z + 1
return ret return ret
end end
@ -97,13 +107,6 @@ local function ranksuitnq(value)
end end
end end
SMODS.Atlas {
key = "joker",
path = "joker.png",
px = 71,
py = 95,
}
SMODS.Sound { SMODS.Sound {
key = "nilly", key = "nilly",
path = "nilly.ogg", path = "nilly.ogg",
@ -425,7 +428,7 @@ joker {
joker { joker {
key = "snowsquall", key = "snowsquall",
pronouns = "he_they", pronouns = "he_they",
config = {extra = {mult_gain = 1, mult = 0}}, config = {extra = {mult_gain = 3, mult = 0}},
attributes = {"mult", "scaling", "hand_type"}, attributes = {"mult", "scaling", "hand_type"},
cost = 6, cost = 6,
rarity = 2, rarity = 2,
@ -721,6 +724,39 @@ joker {
end, end,
} }
joker {
key = "cerulean",
pronouns = "she_her",
config = {extra = {xmult = 3}},
pixel_size = {w = 68, h = 68},
attributes = {"xmult"},
cost = 6,
rarity = 2,
eternal_compat = true,
blueprint_compat = true,
perishable_compat = true,
loc_vars = function(_, _, card)
return {vars = {card.ability.extra.xmult}}
end,
remove_from_deck = function(self)
self:cerulean(true)
end,
calculate = function(_, card, context)
return (context.joker_main or context.forcetrigger) and
{card = card, xmult = card.ability.extra.xmult} or nil
end,
update = function(self, card)
local _ = card.area == G.jokers and self:cerulean(false)
end,
cerulean = function(_, value)
f(G.jokers.cards):each(function(v)
f {"click", "drag", "focus", "hover"}:map(f.index_into(v.states)):each(function(s)
s.can = value or v.config.center.key == "j_Roland_cerulean"
end)
end)
end,
}
joker { joker {
key = "crimson", key = "crimson",
pronouns = "she_her", pronouns = "she_her",

View file

@ -46,6 +46,9 @@ if false then
---@type Card[] ---@type Card[]
CardArea.cards = CardArea.cards CardArea.cards = CardArea.cards
---@type userdata|{getWidth: fun(self: self): number}
SMODS.Atlas.image_data = SMODS.Atlas.image_data
--- @type { constants?: { TEN: table }, new: (fun(self: self, arr?: number[], sign?: number, noNormalize?: boolean): table), pow: (fun(x: number, y: number): number) } --- @type { constants?: { TEN: table }, new: (fun(self: self, arr?: number[], sign?: number, noNormalize?: boolean): table), pow: (fun(x: number, y: number): number) }
_G["Big"] = _G["Big"] _G["Big"] = _G["Big"]