Add way too much production value
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
|
@ -33,10 +33,6 @@ return {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Blind = {
|
Blind = {
|
||||||
bl_Roland_bottom = {
|
|
||||||
name = "The Bottom",
|
|
||||||
text = {"Infinite discards", "Lose if any card was", "not played or discarded"},
|
|
||||||
},
|
|
||||||
bl_Roland_divide = {
|
bl_Roland_divide = {
|
||||||
name = "The Great Divide",
|
name = "The Great Divide",
|
||||||
text = {"Half of the deck", "is discarded"},
|
text = {"Half of the deck", "is discarded"},
|
||||||
|
|
@ -65,6 +61,33 @@ return {
|
||||||
name = "The Tranquilizer",
|
name = "The Tranquilizer",
|
||||||
text = {"#1#s are debuffed", "Changes based on", "most common rank"},
|
text = {"#1#s are debuffed", "Changes based on", "most common rank"},
|
||||||
},
|
},
|
||||||
|
bl_Roland_venerable_visage = {
|
||||||
|
name = "Venerable Visage",
|
||||||
|
text = {"Infinite discards", "Lose if any card was", "not played or discarded"},
|
||||||
|
fail = {
|
||||||
|
"Blasphemy.",
|
||||||
|
"Blunder.",
|
||||||
|
"Crisis.",
|
||||||
|
"Death.",
|
||||||
|
"Denied.",
|
||||||
|
"Failure.",
|
||||||
|
"Fall.",
|
||||||
|
"Feeble.",
|
||||||
|
"Foolish.",
|
||||||
|
"Ignorant.",
|
||||||
|
"Illiterate.",
|
||||||
|
"Judgement.",
|
||||||
|
"Misery.",
|
||||||
|
"Mistake.",
|
||||||
|
"Mockery.",
|
||||||
|
"Perish.",
|
||||||
|
"Pity.",
|
||||||
|
"Terror.",
|
||||||
|
"Tyranny.",
|
||||||
|
"Unfortunate.",
|
||||||
|
"Weak.",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Enhanced = {
|
Enhanced = {
|
||||||
m_wild = {
|
m_wild = {
|
||||||
|
|
|
||||||
166
src/blind.lua
|
|
@ -71,6 +71,34 @@ local function has_enhancement(card)
|
||||||
return not not (e and next(e))
|
return not not (e and next(e))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function hsv_to_rgb(h, s, v)
|
||||||
|
s, v = s or 1, v or 1
|
||||||
|
|
||||||
|
if s <= 0 then
|
||||||
|
return v, v, v
|
||||||
|
end
|
||||||
|
|
||||||
|
local c = v * s
|
||||||
|
local r, g, b = 0, 0, 0
|
||||||
|
local x, m = (1 - math.abs((h * 6 % 2) - 1)) * c, v - c
|
||||||
|
|
||||||
|
if h < 1 / 6 then
|
||||||
|
r, g, b = c, x, 0
|
||||||
|
elseif h < 2 / 6 then
|
||||||
|
r, g, b = x, c, 0
|
||||||
|
elseif h < 3 / 6 then
|
||||||
|
r, g, b = 0, c, x
|
||||||
|
elseif h < 4 / 6 then
|
||||||
|
r, g, b = 0, x, c
|
||||||
|
elseif h < 5 / 6 then
|
||||||
|
r, g, b = x, 0, c
|
||||||
|
else
|
||||||
|
r, g, b = c, 0, x
|
||||||
|
end
|
||||||
|
|
||||||
|
return r + m, g + m, b + m
|
||||||
|
end
|
||||||
|
|
||||||
local function is_locked()
|
local function is_locked()
|
||||||
return G.STATE ~= G.STATES.SELECTING_HAND or G.CONTROLLER.locked or
|
return G.STATE ~= G.STATES.SELECTING_HAND or G.CONTROLLER.locked or
|
||||||
(G.GAME.STOP_USE and G.GAME.STOP_USE > 0)
|
(G.GAME.STOP_USE and G.GAME.STOP_USE > 0)
|
||||||
|
|
@ -79,7 +107,7 @@ end
|
||||||
blind {
|
blind {
|
||||||
key = "nimble",
|
key = "nimble",
|
||||||
boss = {min = 1},
|
boss = {min = 1},
|
||||||
boss_colour = HEX "0291fb",
|
boss_colour = HEX "0291fbff",
|
||||||
pronouns = "she_her",
|
pronouns = "she_her",
|
||||||
config = {draw = 5},
|
config = {draw = 5},
|
||||||
defeat = function()
|
defeat = function()
|
||||||
|
|
@ -115,7 +143,7 @@ blind {
|
||||||
blind {
|
blind {
|
||||||
key = "falseshuffle",
|
key = "falseshuffle",
|
||||||
boss = {min = 3},
|
boss = {min = 3},
|
||||||
boss_colour = HEX "ff7f3d",
|
boss_colour = HEX "ff7f3dff",
|
||||||
pronouns = "any_all",
|
pronouns = "any_all",
|
||||||
disable = function()
|
disable = function()
|
||||||
q(function()
|
q(function()
|
||||||
|
|
@ -150,7 +178,7 @@ blind {
|
||||||
blind {
|
blind {
|
||||||
key = "divide",
|
key = "divide",
|
||||||
boss = {min = 1},
|
boss = {min = 1},
|
||||||
boss_colour = HEX "b18480",
|
boss_colour = HEX "b18480ff",
|
||||||
pronouns = "he_they",
|
pronouns = "he_they",
|
||||||
disable = function()
|
disable = function()
|
||||||
-- Ensures that this runs after 'set_blind' since it also gets added to queue.
|
-- Ensures that this runs after 'set_blind' since it also gets added to queue.
|
||||||
|
|
@ -191,7 +219,7 @@ blind {
|
||||||
blind {
|
blind {
|
||||||
key = "mitotic",
|
key = "mitotic",
|
||||||
boss = {min = 3},
|
boss = {min = 3},
|
||||||
boss_colour = HEX "80b48e",
|
boss_colour = HEX "80b48eff",
|
||||||
pronouns = "it_its",
|
pronouns = "it_its",
|
||||||
calculate = function(_, b, context)
|
calculate = function(_, b, context)
|
||||||
if b.disabled or not context.pre_discard then
|
if b.disabled or not context.pre_discard then
|
||||||
|
|
@ -219,7 +247,7 @@ blind {
|
||||||
blind {
|
blind {
|
||||||
key = "tranquilizer",
|
key = "tranquilizer",
|
||||||
boss = {min = 6},
|
boss = {min = 6},
|
||||||
boss_colour = HEX "bdaecc",
|
boss_colour = HEX "bdaeccff",
|
||||||
pronouns = "they_them",
|
pronouns = "they_them",
|
||||||
collection_loc_vars = function(_)
|
collection_loc_vars = function(_)
|
||||||
return {
|
return {
|
||||||
|
|
@ -272,33 +300,10 @@ blind {
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
blind {
|
|
||||||
key = "bottom",
|
|
||||||
boss = {min = 2},
|
|
||||||
boss_colour = HEX "817536",
|
|
||||||
pronouns = "they_them",
|
|
||||||
calculate = function(_, b, context)
|
|
||||||
if b.disabled then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
if context.pre_discard and next(G.hand.highlighted) then
|
|
||||||
b:wiggle()
|
|
||||||
ease_discard(1)
|
|
||||||
end
|
|
||||||
|
|
||||||
if context.end_of_round and (next(G.deck.cards) or next(G.hand.cards)) then
|
|
||||||
b:wiggle()
|
|
||||||
G.STATE = G.STATES.GAME_OVER
|
|
||||||
G.STATE_COMPLETE = false
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
blind {
|
blind {
|
||||||
key = "improbable",
|
key = "improbable",
|
||||||
boss = {min = 4},
|
boss = {min = 4},
|
||||||
boss_colour = HEX "009966",
|
boss_colour = HEX "009966ff",
|
||||||
pronouns = "it_its",
|
pronouns = "it_its",
|
||||||
mult = 2,
|
mult = 2,
|
||||||
dollars = 5,
|
dollars = 5,
|
||||||
|
|
@ -323,8 +328,14 @@ local orig_update = Game.update
|
||||||
---@diagnostic disable-next-line: duplicate-set-field
|
---@diagnostic disable-next-line: duplicate-set-field
|
||||||
function Game.update(...)
|
function Game.update(...)
|
||||||
orig_update(...)
|
orig_update(...)
|
||||||
local orig = G.GAME.probabilities
|
|
||||||
local improbable = G.GAME.modifiers.Roland_improbable
|
local boss_colour = (G.P_BLINDS.bl_Roland_venerable_visage or {}).boss_colour
|
||||||
|
|
||||||
|
if boss_colour then
|
||||||
|
boss_colour[1], boss_colour[2], boss_colour[3] = hsv_to_rgb(os.clock() / 6 % 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
local improbable, orig = G.GAME.modifiers.Roland_improbable, G.GAME.probabilities
|
||||||
|
|
||||||
-- Normally unreachable since we set it to nil ourselves,
|
-- Normally unreachable since we set it to nil ourselves,
|
||||||
-- but other mods may want to use this modifier.
|
-- but other mods may want to use this modifier.
|
||||||
|
|
@ -357,7 +368,7 @@ end
|
||||||
blind {
|
blind {
|
||||||
key = "equinox",
|
key = "equinox",
|
||||||
boss = {min = 6},
|
boss = {min = 6},
|
||||||
boss_colour = HEX "000000",
|
boss_colour = HEX "000000ff",
|
||||||
pronouns = "any_all",
|
pronouns = "any_all",
|
||||||
defeat = function()
|
defeat = function()
|
||||||
G.GAME.modifiers.Roland_equinox = nil
|
G.GAME.modifiers.Roland_equinox = nil
|
||||||
|
|
@ -404,3 +415,94 @@ function UIElement:draw_self(...)
|
||||||
return orig_draw_self(self, ...)
|
return orig_draw_self(self, ...)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
blind {
|
||||||
|
key = "venerable_visage",
|
||||||
|
boss = {showdown = true},
|
||||||
|
boss_colour = HEX "f6f6f2ff",
|
||||||
|
pronouns = "any_all",
|
||||||
|
calculate = function(self, b, context)
|
||||||
|
if b.disabled then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if context.pre_discard and next(G.hand.highlighted) then
|
||||||
|
q(function()
|
||||||
|
b:wiggle()
|
||||||
|
ease_discard(1)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
if b.Roland_oh_no or not context.end_of_round or not next(G.deck.cards) or not next(G.hand.cards) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
b.Roland_oh_no = true
|
||||||
|
b:wiggle()
|
||||||
|
self.vitriol(b)
|
||||||
|
|
||||||
|
q {
|
||||||
|
trigger = "before",
|
||||||
|
func = function()
|
||||||
|
G.STATE = G.STATES.GAME_OVER
|
||||||
|
G.STATE_COMPLETE = false
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
vitriol = function(b)
|
||||||
|
local fail = G.localization.descriptions.Blind.bl_Roland_venerable_visage.fail
|
||||||
|
local speed = 0.1
|
||||||
|
|
||||||
|
SMODS.draw_cards(#G.deck.cards)
|
||||||
|
play_sound("gong", 0.6)
|
||||||
|
|
||||||
|
attention_text {
|
||||||
|
text = pseudorandom_element(fail, pseudoseed "Roland_venerable_visage"),
|
||||||
|
offset = {x = 0, y = -3.6},
|
||||||
|
major = G.play,
|
||||||
|
scale = 3,
|
||||||
|
hold = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(1)
|
||||||
|
|
||||||
|
f(G.playing_cards):foreach(function(v)
|
||||||
|
q {
|
||||||
|
trigger = "before",
|
||||||
|
delay = speed,
|
||||||
|
func = function()
|
||||||
|
v:start_dissolve()
|
||||||
|
v:shatter()
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
end)
|
||||||
|
|
||||||
|
delay(1)
|
||||||
|
|
||||||
|
f(G.P_CARDS):foreach(function(v)
|
||||||
|
q {
|
||||||
|
delay = speed,
|
||||||
|
func = function()
|
||||||
|
G.playing_card = (G.playing_card and G.playing_card + 1) or 1
|
||||||
|
|
||||||
|
local card = Card(
|
||||||
|
b and b.T.x or 0,
|
||||||
|
b and b.T.y or 0,
|
||||||
|
G.CARD_W,
|
||||||
|
G.CARD_H,
|
||||||
|
v,
|
||||||
|
G.P_CENTERS.m_Bakery_Curse or G.P_CENTERS.c_base,
|
||||||
|
{playing_card = G.playing_card}
|
||||||
|
)
|
||||||
|
|
||||||
|
table.insert(G.playing_cards, card)
|
||||||
|
G.deck:emplace(card)
|
||||||
|
play_sound("card1")
|
||||||
|
card:add_to_deck()
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
end)
|
||||||
|
|
||||||
|
delay(1)
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,8 @@ local joker = (function()
|
||||||
local _ = tbl.artist and q(function()
|
local _ = tbl.artist and q(function()
|
||||||
Bakery_API.contributors.Roland_char = Bakery_API.contributors.Roland_char or {
|
Bakery_API.contributors.Roland_char = Bakery_API.contributors.Roland_char or {
|
||||||
name = "char (@irregulester)",
|
name = "char (@irregulester)",
|
||||||
fg = HEX "f8f8f2",
|
fg = HEX "f8f8f2ff",
|
||||||
bg = HEX "ff79c6",
|
bg = HEX "ff79c6ff",
|
||||||
}
|
}
|
||||||
|
|
||||||
tbl.artist = "Roland_" .. tbl.artist
|
tbl.artist = "Roland_" .. tbl.artist
|
||||||
|
|
@ -159,7 +159,7 @@ joker {
|
||||||
any_carbon = any_carbon or is_carbon(v)
|
any_carbon = any_carbon or is_carbon(v)
|
||||||
level_sum = level_sum + v.ability.extra.hands * (v.getEvalQty and v:getEvalQty() or 1)
|
level_sum = level_sum + v.ability.extra.hands * (v.getEvalQty and v:getEvalQty() or 1)
|
||||||
sell_sum = sell_sum + v.sell_cost * (v.getEvalQty and v:getEvalQty() or 1)
|
sell_sum = sell_sum + v.sell_cost * (v.getEvalQty and v:getEvalQty() or 1)
|
||||||
v:start_dissolve({HEX "57ecab"}, nil, 1.6)
|
v:start_dissolve({HEX "57ecabff"}, nil, 1.6)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
if not any_carbon then
|
if not any_carbon then
|
||||||
|
|
@ -206,7 +206,7 @@ joker {
|
||||||
end)
|
end)
|
||||||
else
|
else
|
||||||
f(consumables):foreach(function(v)
|
f(consumables):foreach(function(v)
|
||||||
v:start_dissolve({HEX "57ecab"}, nil, 1.6)
|
v:start_dissolve({HEX "57ecabff"}, nil, 1.6)
|
||||||
destroyed = destroyed + 1
|
destroyed = destroyed + 1
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
@ -435,7 +435,25 @@ joker {
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
calculate = function(_, _, context)
|
calculate = function(_, _, context)
|
||||||
local _ = context.selling_self and draw_card(G.deck, G.hand, 100, "up", false, G.deck.cards[1])
|
if not context.forcetrigger and not context.selling_self then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
draw_card(G.deck, G.hand, 100, "up", false, G.deck.cards[1])
|
||||||
|
local current_round = G.GAME.current_round
|
||||||
|
local facing_blind = G.GAME.facing_blind
|
||||||
|
SMODS.calculate_context({drawing_cards = true, draw = {G.deck.cards}})
|
||||||
|
|
||||||
|
SMODS.calculate_context({
|
||||||
|
---@diagnostic disable-next-line: assign-type-mismatch
|
||||||
|
first_hand_drawn = not current_round.any_hand_drawn and facing_blind,
|
||||||
|
---@diagnostic disable-next-line: assign-type-mismatch
|
||||||
|
hand_drawn = facing_blind and {G.deck.cards[1]},
|
||||||
|
other_drawn = not facing_blind and {G.deck.cards[1]},
|
||||||
|
})
|
||||||
|
|
||||||
|
---@diagnostic disable-next-line: inject-field
|
||||||
|
facing_blind.any_hand_drawn = facing_blind.any_hand_drawn or facing_blind
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -496,6 +514,11 @@ joker {
|
||||||
return {xmult = card.ability.extra.xmult}
|
return {xmult = card.ability.extra.xmult}
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
in_pool = function()
|
||||||
|
return f(G.playing_cards):any(function(v)
|
||||||
|
return SMODS.has_enhancement(v, "m_wild")
|
||||||
|
end)
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
joker {
|
joker {
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ SMODS.Seal {
|
||||||
key = "glass",
|
key = "glass",
|
||||||
atlas = "seal",
|
atlas = "seal",
|
||||||
pos = {x = 0, y = 0},
|
pos = {x = 0, y = 0},
|
||||||
badge_colour = HEX "a6a6a6",
|
badge_colour = HEX "a6a6a6ff",
|
||||||
pronouns = "he_him",
|
pronouns = "he_him",
|
||||||
calculate = function(_, card, context)
|
calculate = function(_, card, context)
|
||||||
local function eq(v)
|
local function eq(v)
|
||||||
|
|
|
||||||