1.0.0f
@ -212,7 +212,7 @@ function Blind:set_blind(blind, reset, silent)
|
|||||||
if not reset then self:debuff_card(v, true) end
|
if not reset then self:debuff_card(v, true) end
|
||||||
end
|
end
|
||||||
|
|
||||||
G.ARGS.spin.real = (self.config.blind.boss and (self.config.blind.boss.showdown and 0.5 or 0.25) or 0)
|
G.ARGS.spin.real = (G.SETTINGS.reduced_motion and 0 or 1)*(self.config.blind.boss and (self.config.blind.boss.showdown and 0.5 or 0.25) or 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Blind:alert_debuff(first)
|
function Blind:alert_debuff(first)
|
||||||
@ -727,7 +727,7 @@ function Blind:load(blindTable)
|
|||||||
self.only_hand = blindTable.only_hand
|
self.only_hand = blindTable.only_hand
|
||||||
self.triggered = blindTable.triggered
|
self.triggered = blindTable.triggered
|
||||||
|
|
||||||
G.ARGS.spin.real = (self.config.blind.boss and (self.config.blind.boss.showdown and 1 or 0.3) or 0)
|
G.ARGS.spin.real = (G.SETTINGS.reduced_motion and 0 or 1)*(self.config.blind.boss and (self.config.blind.boss.showdown and 1 or 0.3) or 0)
|
||||||
|
|
||||||
if G.P_BLINDS[blindTable.config_blind] then
|
if G.P_BLINDS[blindTable.config_blind] then
|
||||||
self.blind_set = true
|
self.blind_set = true
|
||||||
|
289
card.lua
@ -196,6 +196,9 @@ function Card:set_sprites(_center, _front)
|
|||||||
if _center.name == 'Photograph' and (_center.discovered or self.bypass_discovery_center) then
|
if _center.name == 'Photograph' and (_center.discovered or self.bypass_discovery_center) then
|
||||||
self.children.center.scale.y = self.children.center.scale.y/1.2
|
self.children.center.scale.y = self.children.center.scale.y/1.2
|
||||||
end
|
end
|
||||||
|
if _center.name == 'Square Joker' and (_center.discovered or self.bypass_discovery_center) then
|
||||||
|
self.children.center.scale.y = self.children.center.scale.x
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if _center.soul_pos then
|
if _center.soul_pos then
|
||||||
@ -240,6 +243,11 @@ function Card:set_ability(center, initial, delay_sprites)
|
|||||||
self.T.h = H
|
self.T.h = H
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if center.name == "Square Joker" and (center.discovered or self.bypass_discovery_center) then
|
||||||
|
H = W
|
||||||
|
self.T.h = H
|
||||||
|
end
|
||||||
|
|
||||||
if center.name == "Wee Joker" and (center.discovered or self.bypass_discovery_center) then
|
if center.name == "Wee Joker" and (center.discovered or self.bypass_discovery_center) then
|
||||||
H = H*0.7
|
H = H*0.7
|
||||||
W = W*0.7
|
W = W*0.7
|
||||||
@ -368,6 +376,7 @@ function Card:set_cost()
|
|||||||
self.cost = self.cost + 3
|
self.cost = self.cost + 3
|
||||||
end
|
end
|
||||||
if (self.ability.set == 'Planet' or (self.ability.set == 'Booster' and self.ability.name:find('Celestial'))) and #find_joker('Astronomer') > 0 then self.cost = 0 end
|
if (self.ability.set == 'Planet' or (self.ability.set == 'Booster' and self.ability.name:find('Celestial'))) and #find_joker('Astronomer') > 0 then self.cost = 0 end
|
||||||
|
if self.ability.rental then self.cost = 1 end
|
||||||
self.sell_cost = math.max(1, math.floor(self.cost/2)) + (self.ability.extra_value or 0)
|
self.sell_cost = math.max(1, math.floor(self.cost/2)) + (self.ability.extra_value or 0)
|
||||||
if self.area and self.ability.couponed and (self.area == G.shop_jokers or self.area == G.shop_booster) then self.cost = 0 end
|
if self.area and self.ability.couponed and (self.area == G.shop_jokers or self.area == G.shop_booster) then self.cost = 0 end
|
||||||
self.sell_cost_label = self.facing == 'back' and '?' or self.sell_cost
|
self.sell_cost_label = self.facing == 'back' and '?' or self.sell_cost
|
||||||
@ -493,12 +502,33 @@ function Card:get_seal(bypass_debuff)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Card:set_eternal(_eternal)
|
function Card:set_eternal(_eternal)
|
||||||
if self.config.center.eternal_compat then
|
self.ability.eternal = nil
|
||||||
|
if self.config.center.eternal_compat and not self.ability.perishable then
|
||||||
self.ability.eternal = _eternal
|
self.ability.eternal = _eternal
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Card:set_perishable(_perishable)
|
||||||
|
self.ability.perishable = nil
|
||||||
|
if self.config.center.perishable_compat and not self.ability.eternal then
|
||||||
|
self.ability.perishable = true
|
||||||
|
self.ability.perish_tally = G.GAME.perishable_rounds
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Card:set_rental(_rental)
|
||||||
|
self.ability.rental = _rental
|
||||||
|
self:set_cost()
|
||||||
|
end
|
||||||
|
|
||||||
function Card:set_debuff(should_debuff)
|
function Card:set_debuff(should_debuff)
|
||||||
|
if self.ability.perishable and self.ability.perish_tally <= 0 then
|
||||||
|
if not self.debuff then
|
||||||
|
self.debuff = true
|
||||||
|
if self.area == G.jokers then self:remove_from_deck(true) end
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
if should_debuff ~= self.debuff then
|
if should_debuff ~= self.debuff then
|
||||||
if self.area == G.jokers then if should_debuff then self:remove_from_deck(true) else self:add_to_deck(true) end end
|
if self.area == G.jokers then if should_debuff then self:remove_from_deck(true) else self:add_to_deck(true) end end
|
||||||
self.debuff = should_debuff
|
self.debuff = should_debuff
|
||||||
@ -595,13 +625,17 @@ function Card:add_to_deck(from_debuff)
|
|||||||
if self.ability.name == 'Stuntman' then
|
if self.ability.name == 'Stuntman' then
|
||||||
G.hand:change_size(-self.ability.extra.h_size)
|
G.hand:change_size(-self.ability.extra.h_size)
|
||||||
end
|
end
|
||||||
if self.edition and self.edition.negative and not from_debuff then
|
if self.edition and self.edition.negative then
|
||||||
|
if from_debuff then
|
||||||
|
self.ability.queue_negative_removal = nil
|
||||||
|
else
|
||||||
if self.ability.consumeable then
|
if self.ability.consumeable then
|
||||||
G.consumeables.config.card_limit = G.consumeables.config.card_limit + 1
|
G.consumeables.config.card_limit = G.consumeables.config.card_limit + 1
|
||||||
else
|
else
|
||||||
G.jokers.config.card_limit = G.jokers.config.card_limit + 1
|
G.jokers.config.card_limit = G.jokers.config.card_limit + 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
if G.GAME.blind then G.E_MANAGER:add_event(Event({ func = function() G.GAME.blind:set_blind(nil, true, nil); return true end })) end
|
if G.GAME.blind then G.E_MANAGER:add_event(Event({ func = function() G.GAME.blind:set_blind(nil, true, nil); return true end })) end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -648,13 +682,17 @@ function Card:remove_from_deck(from_debuff)
|
|||||||
if self.ability.name == 'Stuntman' then
|
if self.ability.name == 'Stuntman' then
|
||||||
G.hand:change_size(self.ability.extra.h_size)
|
G.hand:change_size(self.ability.extra.h_size)
|
||||||
end
|
end
|
||||||
if self.edition and self.edition.negative and not from_debuff and G.jokers then
|
if self.edition and self.edition.negative and G.jokers then
|
||||||
|
if from_debuff then
|
||||||
|
self.ability.queue_negative_removal = true
|
||||||
|
else
|
||||||
if self.ability.consumeable then
|
if self.ability.consumeable then
|
||||||
G.consumeables.config.card_limit = G.consumeables.config.card_limit - 1
|
G.consumeables.config.card_limit = G.consumeables.config.card_limit - 1
|
||||||
else
|
else
|
||||||
G.jokers.config.card_limit = G.jokers.config.card_limit - 1
|
G.jokers.config.card_limit = G.jokers.config.card_limit - 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
if G.GAME.blind then G.E_MANAGER:add_event(Event({ func = function() G.GAME.blind:set_blind(nil, true, nil); return true end })) end
|
if G.GAME.blind then G.E_MANAGER:add_event(Event({ func = function() G.GAME.blind:set_blind(nil, true, nil); return true end })) end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -740,7 +778,7 @@ function Card:generate_UIBox_ability_table()
|
|||||||
elseif self.ability.name == 'Mystic Summit' then loc_vars = {self.ability.extra.mult, self.ability.extra.d_remaining}
|
elseif self.ability.name == 'Mystic Summit' then loc_vars = {self.ability.extra.mult, self.ability.extra.d_remaining}
|
||||||
elseif self.ability.name == 'Marble Joker' then
|
elseif self.ability.name == 'Marble Joker' then
|
||||||
elseif self.ability.name == 'Loyalty Card' then loc_vars = {self.ability.extra.Xmult, self.ability.extra.every + 1, localize{type = 'variable', key = (self.ability.loyalty_remaining == 0 and 'loyalty_active' or 'loyalty_inactive'), vars = {self.ability.loyalty_remaining}}}
|
elseif self.ability.name == 'Loyalty Card' then loc_vars = {self.ability.extra.Xmult, self.ability.extra.every + 1, localize{type = 'variable', key = (self.ability.loyalty_remaining == 0 and 'loyalty_active' or 'loyalty_inactive'), vars = {self.ability.loyalty_remaining}}}
|
||||||
elseif self.ability.name == '8 Ball' then loc_vars = {self.ability.extra}
|
elseif self.ability.name == '8 Ball' then loc_vars = {''..(G.GAME and G.GAME.probabilities.normal or 1),self.ability.extra}
|
||||||
elseif self.ability.name == 'Dusk' then loc_vars = {self.ability.extra+1}
|
elseif self.ability.name == 'Dusk' then loc_vars = {self.ability.extra+1}
|
||||||
elseif self.ability.name == 'Raised Fist' then
|
elseif self.ability.name == 'Raised Fist' then
|
||||||
elseif self.ability.name == 'Fibonacci' then loc_vars = {self.ability.extra}
|
elseif self.ability.name == 'Fibonacci' then loc_vars = {self.ability.extra}
|
||||||
@ -787,7 +825,7 @@ function Card:generate_UIBox_ability_table()
|
|||||||
elseif self.ability.name == 'Troubadour' then loc_vars = {self.ability.extra.h_size, -self.ability.extra.h_plays}
|
elseif self.ability.name == 'Troubadour' then loc_vars = {self.ability.extra.h_size, -self.ability.extra.h_plays}
|
||||||
elseif self.ability.name == 'Certificate' then loc_vars = {self.ability.extra}
|
elseif self.ability.name == 'Certificate' then loc_vars = {self.ability.extra}
|
||||||
elseif self.ability.name == 'Throwback' then loc_vars = {self.ability.extra, self.ability.x_mult}
|
elseif self.ability.name == 'Throwback' then loc_vars = {self.ability.extra, self.ability.x_mult}
|
||||||
elseif self.ability.name == 'Hanging Chad' then loc_vars = {self.ability.extra+1}
|
elseif self.ability.name == 'Hanging Chad' then loc_vars = {self.ability.extra}
|
||||||
elseif self.ability.name == 'Rough Gem' then loc_vars = {self.ability.extra}
|
elseif self.ability.name == 'Rough Gem' then loc_vars = {self.ability.extra}
|
||||||
elseif self.ability.name == 'Bloodstone' then loc_vars = {''..(G.GAME and G.GAME.probabilities.normal or 1), self.ability.extra.odds, self.ability.extra.Xmult}
|
elseif self.ability.name == 'Bloodstone' then loc_vars = {''..(G.GAME and G.GAME.probabilities.normal or 1), self.ability.extra.odds, self.ability.extra.Xmult}
|
||||||
elseif self.ability.name == 'Arrowhead' then loc_vars = {self.ability.extra}
|
elseif self.ability.name == 'Arrowhead' then loc_vars = {self.ability.extra}
|
||||||
@ -872,10 +910,10 @@ function Card:generate_UIBox_ability_table()
|
|||||||
elseif self.ability.name == 'Shoot the Moon' then loc_vars = {self.ability.extra}
|
elseif self.ability.name == 'Shoot the Moon' then loc_vars = {self.ability.extra}
|
||||||
elseif self.ability.name == "Driver's License" then loc_vars = {self.ability.extra, self.ability.driver_tally or '0'}
|
elseif self.ability.name == "Driver's License" then loc_vars = {self.ability.extra, self.ability.driver_tally or '0'}
|
||||||
elseif self.ability.name == 'Burnt Joker' then
|
elseif self.ability.name == 'Burnt Joker' then
|
||||||
elseif self.ability.name == 'Bootstraps' then loc_vars = {self.ability.extra.mult, self.ability.extra.dollars}
|
elseif self.ability.name == 'Bootstraps' then loc_vars = {self.ability.extra.mult, self.ability.extra.dollars, self.ability.extra.mult*math.floor((G.GAME.dollars + (G.GAME.dollar_buffer or 0))/self.ability.extra.dollars)}
|
||||||
elseif self.ability.name == 'Caino' then loc_vars = {self.ability.extra, self.ability.caino_xmult}
|
elseif self.ability.name == 'Caino' then loc_vars = {self.ability.extra, self.ability.caino_xmult}
|
||||||
elseif self.ability.name == 'Triboulet' then loc_vars = {self.ability.extra}
|
elseif self.ability.name == 'Triboulet' then loc_vars = {self.ability.extra}
|
||||||
elseif self.ability.name == 'Yorick' then loc_vars = {self.ability.extra.xmult, self.ability.extra.discards, self.ability.yorick_discards}
|
elseif self.ability.name == 'Yorick' then loc_vars = {self.ability.extra.xmult, self.ability.extra.discards, self.ability.yorick_discards, self.ability.x_mult}
|
||||||
elseif self.ability.name == 'Chicot' then
|
elseif self.ability.name == 'Chicot' then
|
||||||
elseif self.ability.name == 'Perkeo' then loc_vars = {self.ability.extra}
|
elseif self.ability.name == 'Perkeo' then loc_vars = {self.ability.extra}
|
||||||
end
|
end
|
||||||
@ -896,6 +934,11 @@ function Card:generate_UIBox_ability_table()
|
|||||||
end
|
end
|
||||||
if self.seal then badges[#badges + 1] = string.lower(self.seal)..'_seal' end
|
if self.seal then badges[#badges + 1] = string.lower(self.seal)..'_seal' end
|
||||||
if self.ability.eternal then badges[#badges + 1] = 'eternal' end
|
if self.ability.eternal then badges[#badges + 1] = 'eternal' end
|
||||||
|
if self.ability.perishable then
|
||||||
|
loc_vars = loc_vars or {}; loc_vars.perish_tally=self.ability.perish_tally
|
||||||
|
badges[#badges + 1] = 'perishable'
|
||||||
|
end
|
||||||
|
if self.ability.rental then badges[#badges + 1] = 'rental' end
|
||||||
if self.pinned then badges[#badges + 1] = 'pinned_left' end
|
if self.pinned then badges[#badges + 1] = 'pinned_left' end
|
||||||
|
|
||||||
if self.sticker then loc_vars = loc_vars or {}; loc_vars.sticker=self.sticker end
|
if self.sticker then loc_vars = loc_vars or {}; loc_vars.sticker=self.sticker end
|
||||||
@ -1000,10 +1043,18 @@ function Card:get_end_of_round_effect(context)
|
|||||||
trigger = 'before',
|
trigger = 'before',
|
||||||
delay = 0.0,
|
delay = 0.0,
|
||||||
func = (function()
|
func = (function()
|
||||||
local card = create_card(card_type,G.consumeables, nil, nil, nil, nil, nil, 'blusl')
|
if G.GAME.last_hand_played then
|
||||||
|
local _planet = 0
|
||||||
|
for k, v in pairs(G.P_CENTER_POOLS.Planet) do
|
||||||
|
if v.config.hand_type == G.GAME.last_hand_played then
|
||||||
|
_planet = v.key
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local card = create_card(card_type,G.consumeables, nil, nil, nil, nil, _planet, 'blusl')
|
||||||
card:add_to_deck()
|
card:add_to_deck()
|
||||||
G.consumeables:emplace(card)
|
G.consumeables:emplace(card)
|
||||||
G.GAME.consumeable_buffer = 0
|
G.GAME.consumeable_buffer = 0
|
||||||
|
end
|
||||||
return true
|
return true
|
||||||
end)}))
|
end)}))
|
||||||
card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize('k_plus_planet'), colour = G.C.SECONDARY_SET.Planet})
|
card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize('k_plus_planet'), colour = G.C.SECONDARY_SET.Planet})
|
||||||
@ -2216,6 +2267,26 @@ function Card:calculate_seal(context)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Card:calculate_rental()
|
||||||
|
if self.ability.rental then
|
||||||
|
ease_dollars(-G.GAME.rental_rate)
|
||||||
|
card_eval_status_text(self, 'dollars', -G.GAME.rental_rate)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Card:calculate_perishable()
|
||||||
|
if self.ability.perishable and self.ability.perish_tally > 0 then
|
||||||
|
if self.ability.perish_tally == 1 then
|
||||||
|
self.ability.perish_tally = 0
|
||||||
|
card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize('k_disabled_ex'),colour = G.C.FILTER, delay = 0.45})
|
||||||
|
self:set_debuff()
|
||||||
|
else
|
||||||
|
self.ability.perish_tally = self.ability.perish_tally - 1
|
||||||
|
card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize{type='variable',key='a_remaining',vars={self.ability.perish_tally}},colour = G.C.FILTER, delay = 0.45})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function Card:calculate_joker(context)
|
function Card:calculate_joker(context)
|
||||||
if self.debuff then return nil end
|
if self.debuff then return nil end
|
||||||
if self.ability.set == "Planet" and not self.debuff then
|
if self.ability.set == "Planet" and not self.debuff then
|
||||||
@ -2400,6 +2471,7 @@ function Card:calculate_joker(context)
|
|||||||
elseif seal_type > 0.25 then _card:set_seal('Gold', true)
|
elseif seal_type > 0.25 then _card:set_seal('Gold', true)
|
||||||
else _card:set_seal('Purple', true)
|
else _card:set_seal('Purple', true)
|
||||||
end
|
end
|
||||||
|
G.GAME.blind:debuff_card(_card)
|
||||||
G.hand:sort()
|
G.hand:sort()
|
||||||
if context.blueprint_card then context.blueprint_card:juice_up() else self:juice_up() end
|
if context.blueprint_card then context.blueprint_card:juice_up() else self:juice_up() end
|
||||||
return true
|
return true
|
||||||
@ -2427,7 +2499,7 @@ function Card:calculate_joker(context)
|
|||||||
card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize('ph_boss_disabled')})
|
card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize('ph_boss_disabled')})
|
||||||
return true end }))
|
return true end }))
|
||||||
end
|
end
|
||||||
if self.ability.name == 'Madness' and not context.blueprint then
|
if self.ability.name == 'Madness' and not context.blueprint and not context.blind.boss then
|
||||||
self.ability.x_mult = self.ability.x_mult + self.ability.extra
|
self.ability.x_mult = self.ability.x_mult + self.ability.extra
|
||||||
local destructable_jokers = {}
|
local destructable_jokers = {}
|
||||||
for i = 1, #G.jokers.cards do
|
for i = 1, #G.jokers.cards do
|
||||||
@ -2712,6 +2784,20 @@ function Card:calculate_joker(context)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if self.ability.name == 'Yorick' and not context.blueprint then
|
||||||
|
if self.ability.yorick_discards <= 1 then
|
||||||
|
self.ability.yorick_discards = self.ability.extra.discards
|
||||||
|
self.ability.x_mult = self.ability.x_mult + self.ability.extra.xmult
|
||||||
|
return {
|
||||||
|
delay = 0.2,
|
||||||
|
message = localize{type='variable',key='a_xmult',vars={self.ability.x_mult}},
|
||||||
|
colour = G.C.RED
|
||||||
|
}
|
||||||
|
else
|
||||||
|
self.ability.yorick_discards = self.ability.yorick_discards - 1
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
if self.ability.name == 'Trading Card' and not context.blueprint and
|
if self.ability.name == 'Trading Card' and not context.blueprint and
|
||||||
G.GAME.current_round.discards_used <= 0 and #context.full_hand == 1 then
|
G.GAME.current_round.discards_used <= 0 and #context.full_hand == 1 then
|
||||||
ease_dollars(self.ability.extra)
|
ease_dollars(self.ability.extra)
|
||||||
@ -2767,21 +2853,6 @@ function Card:calculate_joker(context)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if self.ability.name == 'Yorick' and self.ability.yorick_discards > 0 and not self.ability.yorick_tallied and not context.blueprint then
|
|
||||||
self.ability.yorick_tallied = true
|
|
||||||
G.E_MANAGER:add_event(Event({
|
|
||||||
func = function()
|
|
||||||
self.ability.yorick_tallied = nil
|
|
||||||
self.ability.yorick_discards = self.ability.yorick_discards - 1
|
|
||||||
if self.ability.yorick_discards == 0 then
|
|
||||||
card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize('k_active_ex'),colour = G.C.FILTER, delay = 0.45})
|
|
||||||
else
|
|
||||||
card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize{type='variable',key='a_remaining',vars={self.ability.yorick_discards}},colour = G.C.FILTER, delay = 0.45})
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end}))
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
if self.ability.name == 'Faceless Joker' and context.other_card == context.full_hand[#context.full_hand] then
|
if self.ability.name == 'Faceless Joker' and context.other_card == context.full_hand[#context.full_hand] then
|
||||||
local face_cards = 0
|
local face_cards = 0
|
||||||
@ -2900,6 +2971,16 @@ function Card:calculate_joker(context)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if self.ability.name == 'To Do List' and not context.blueprint then
|
||||||
|
local _poker_hands = {}
|
||||||
|
for k, v in pairs(G.GAME.hands) do
|
||||||
|
if v.visible and k ~= self.ability.to_do_poker_hand then _poker_hands[#_poker_hands+1] = k end
|
||||||
|
end
|
||||||
|
self.ability.to_do_poker_hand = pseudorandom_element(_poker_hands, pseudoseed('to_do'))
|
||||||
|
return {
|
||||||
|
message = localize('k_reset')
|
||||||
|
}
|
||||||
|
end
|
||||||
if self.ability.name == 'Egg' then
|
if self.ability.name == 'Egg' then
|
||||||
self.ability.extra_value = self.ability.extra_value + self.ability.extra
|
self.ability.extra_value = self.ability.extra_value + self.ability.extra
|
||||||
self:set_cost()
|
self:set_cost()
|
||||||
@ -3021,6 +3102,27 @@ function Card:calculate_joker(context)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if self.ability.name == '8 Ball' and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then
|
||||||
|
if (context.other_card:get_id() == 8) and (pseudorandom('8ball') < G.GAME.probabilities.normal/self.ability.extra) then
|
||||||
|
G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1
|
||||||
|
return {
|
||||||
|
extra = {focus = self, message = localize('k_plus_tarot'), func = function()
|
||||||
|
G.E_MANAGER:add_event(Event({
|
||||||
|
trigger = 'before',
|
||||||
|
delay = 0.0,
|
||||||
|
func = (function()
|
||||||
|
local card = create_card('Tarot',G.consumeables, nil, nil, nil, nil, nil, '8ba')
|
||||||
|
card:add_to_deck()
|
||||||
|
G.consumeables:emplace(card)
|
||||||
|
G.GAME.consumeable_buffer = 0
|
||||||
|
return true
|
||||||
|
end)}))
|
||||||
|
end},
|
||||||
|
colour = G.C.SECONDARY_SET.Tarot,
|
||||||
|
card = self
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
if self.ability.name == 'The Idol' and
|
if self.ability.name == 'The Idol' and
|
||||||
context.other_card:get_id() == G.GAME.current_round.idol_card.id and
|
context.other_card:get_id() == G.GAME.current_round.idol_card.id and
|
||||||
context.other_card:is_suit(G.GAME.current_round.idol_card.suit) then
|
context.other_card:is_suit(G.GAME.current_round.idol_card.suit) then
|
||||||
@ -3339,7 +3441,7 @@ function Card:calculate_joker(context)
|
|||||||
end
|
end
|
||||||
if self.ability.name == 'Midas Mask' and not context.blueprint then
|
if self.ability.name == 'Midas Mask' and not context.blueprint then
|
||||||
local faces = {}
|
local faces = {}
|
||||||
for k, v in ipairs(context.full_hand) do
|
for k, v in ipairs(context.scoring_hand) do
|
||||||
if v:is_face() then
|
if v:is_face() then
|
||||||
faces[#faces+1] = v
|
faces[#faces+1] = v
|
||||||
v:set_ability(G.P_CENTERS.m_gold, nil, true)
|
v:set_ability(G.P_CENTERS.m_gold, nil, true)
|
||||||
@ -3361,7 +3463,7 @@ function Card:calculate_joker(context)
|
|||||||
end
|
end
|
||||||
if self.ability.name == 'Vampire' and not context.blueprint then
|
if self.ability.name == 'Vampire' and not context.blueprint then
|
||||||
local enhanced = {}
|
local enhanced = {}
|
||||||
for k, v in ipairs(context.full_hand) do
|
for k, v in ipairs(context.scoring_hand) do
|
||||||
if v.config.center ~= G.P_CENTERS.c_base and not v.debuff and not v.vampired then
|
if v.config.center ~= G.P_CENTERS.c_base and not v.debuff and not v.vampired then
|
||||||
enhanced[#enhanced+1] = v
|
enhanced[#enhanced+1] = v
|
||||||
v.vampired = true
|
v.vampired = true
|
||||||
@ -3386,16 +3488,6 @@ function Card:calculate_joker(context)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if self.ability.name == 'To Do List' and context.scoring_name == self.ability.to_do_poker_hand then
|
if self.ability.name == 'To Do List' and context.scoring_name == self.ability.to_do_poker_hand then
|
||||||
G.E_MANAGER:add_event(Event({
|
|
||||||
func = function()
|
|
||||||
local _poker_hands = {}
|
|
||||||
for k, v in pairs(G.GAME.hands) do
|
|
||||||
if v.visible and k ~= self.ability.to_do_poker_hand then _poker_hands[#_poker_hands+1] = k end
|
|
||||||
end
|
|
||||||
self.ability.to_do_poker_hand = pseudorandom_element(_poker_hands, pseudoseed('to_do'))
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
}))
|
|
||||||
ease_dollars(self.ability.extra.dollars)
|
ease_dollars(self.ability.extra.dollars)
|
||||||
G.GAME.dollar_buffer = (G.GAME.dollar_buffer or 0) + self.ability.extra.dollars
|
G.GAME.dollar_buffer = (G.GAME.dollar_buffer or 0) + self.ability.extra.dollars
|
||||||
G.E_MANAGER:add_event(Event({func = (function() G.GAME.dollar_buffer = 0; return true end)}))
|
G.E_MANAGER:add_event(Event({func = (function() G.GAME.dollar_buffer = 0; return true end)}))
|
||||||
@ -3647,30 +3739,6 @@ function Card:calculate_joker(context)
|
|||||||
mult_mod = self.ability.mult
|
mult_mod = self.ability.mult
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
if self.ability.name == '8 Ball' and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then
|
|
||||||
local eights = 0
|
|
||||||
for i = 1, #context.full_hand do
|
|
||||||
if context.full_hand[i]:get_id() == 8 then eights = eights + 1 end
|
|
||||||
end
|
|
||||||
if eights >= self.ability.extra then
|
|
||||||
G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1
|
|
||||||
G.E_MANAGER:add_event(Event({
|
|
||||||
trigger = 'before',
|
|
||||||
delay = 0.0,
|
|
||||||
func = (function()
|
|
||||||
local card = create_card('Planet',G.consumeables, nil, nil, nil, nil, nil, '8ba')
|
|
||||||
card:add_to_deck()
|
|
||||||
G.consumeables:emplace(card)
|
|
||||||
G.GAME.consumeable_buffer = 0
|
|
||||||
return true
|
|
||||||
end)}))
|
|
||||||
return {
|
|
||||||
message = localize('k_plus_planet'),
|
|
||||||
colour = G.C.SECONDARY_SET.Planet,
|
|
||||||
card = self
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if self.ability.name == 'Vagabond' and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then
|
if self.ability.name == 'Vagabond' and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then
|
||||||
if G.GAME.dollars <= self.ability.extra then
|
if G.GAME.dollars <= self.ability.extra then
|
||||||
G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1
|
G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1
|
||||||
@ -3744,10 +3812,10 @@ function Card:calculate_joker(context)
|
|||||||
}
|
}
|
||||||
for i = 1, #context.scoring_hand do
|
for i = 1, #context.scoring_hand do
|
||||||
if context.scoring_hand[i].ability.name ~= 'Wild Card' then
|
if context.scoring_hand[i].ability.name ~= 'Wild Card' then
|
||||||
if context.scoring_hand[i]:is_suit('Hearts') and suits["Hearts"] == 0 then suits["Hearts"] = suits["Hearts"] + 1
|
if context.scoring_hand[i]:is_suit('Hearts', true) and suits["Hearts"] == 0 then suits["Hearts"] = suits["Hearts"] + 1
|
||||||
elseif context.scoring_hand[i]:is_suit('Diamonds') and suits["Diamonds"] == 0 then suits["Diamonds"] = suits["Diamonds"] + 1
|
elseif context.scoring_hand[i]:is_suit('Diamonds', true) and suits["Diamonds"] == 0 then suits["Diamonds"] = suits["Diamonds"] + 1
|
||||||
elseif context.scoring_hand[i]:is_suit('Spades') and suits["Spades"] == 0 then suits["Spades"] = suits["Spades"] + 1
|
elseif context.scoring_hand[i]:is_suit('Spades', true) and suits["Spades"] == 0 then suits["Spades"] = suits["Spades"] + 1
|
||||||
elseif context.scoring_hand[i]:is_suit('Clubs') and suits["Clubs"] == 0 then suits["Clubs"] = suits["Clubs"] + 1 end
|
elseif context.scoring_hand[i]:is_suit('Clubs', true) and suits["Clubs"] == 0 then suits["Clubs"] = suits["Clubs"] + 1 end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for i = 1, #context.scoring_hand do
|
for i = 1, #context.scoring_hand do
|
||||||
@ -3986,14 +4054,6 @@ function Card:calculate_joker(context)
|
|||||||
Xmult_mod = self.ability.caino_xmult
|
Xmult_mod = self.ability.caino_xmult
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
if self.ability.name == 'Yorick' and self.ability.yorick_discards <= 0 then
|
|
||||||
return {
|
|
||||||
message = localize{type='variable',key='a_xmult',vars={self.ability.extra.xmult}},
|
|
||||||
Xmult_mod = self.ability.extra.xmult,
|
|
||||||
colour = G.C.RED,
|
|
||||||
card = self
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -4084,7 +4144,6 @@ function Card:update(dt)
|
|||||||
self.children.focused_ui:remove()
|
self.children.focused_ui:remove()
|
||||||
self.children.focused_ui = nil
|
self.children.focused_ui = nil
|
||||||
end
|
end
|
||||||
if self.cost then self.DEBUG_VALUE = self.cost end
|
|
||||||
|
|
||||||
self:update_alert()
|
self:update_alert()
|
||||||
if self.ability.consumeable and self.ability.consumeable.max_highlighted then
|
if self.ability.consumeable and self.ability.consumeable.max_highlighted then
|
||||||
@ -4093,33 +4152,6 @@ function Card:update(dt)
|
|||||||
if G.STAGE == G.STAGES.RUN then
|
if G.STAGE == G.STAGES.RUN then
|
||||||
if self.ability and self.ability.perma_debuff then self.debuff = true end
|
if self.ability and self.ability.perma_debuff then self.debuff = true end
|
||||||
|
|
||||||
if false then
|
|
||||||
local display_overwrite_text = nil
|
|
||||||
local con = nil
|
|
||||||
if self.highlighted and self.area == G.hand and G.consumeables.highlighted[1] then
|
|
||||||
con = G.consumeables.highlighted[1]
|
|
||||||
if con.config.center.config.mod_conv and con:can_use_consumeable() then
|
|
||||||
display_overwrite_text = true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if display_overwrite_text and not self.children.overwrite then
|
|
||||||
local eval = function(card) return not not card.children.overwrite end
|
|
||||||
juice_card_until(self, eval, true)
|
|
||||||
|
|
||||||
local front = G.P_CARDS[self.config.card_key]
|
|
||||||
local center = G.P_CENTERS[con.ability.consumeable.mod_conv or self.config.center_key]
|
|
||||||
|
|
||||||
self.children.overwrite = Card(0,0, G.CARD_W, G.CARD_H, front, center)
|
|
||||||
self.children.overwrite:set_role({major = self, role_type = 'Glued', draw_major = self})
|
|
||||||
self.children.overwrite.states.collide.can = false
|
|
||||||
self.children.overwrite.parent = self
|
|
||||||
elseif self.children.overwrite and not display_overwrite_text then
|
|
||||||
self.children.overwrite:remove()
|
|
||||||
self.children.overwrite = nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if self.area and ((self.area == G.jokers) or (self.area == G.consumeables)) then
|
if self.area and ((self.area == G.jokers) or (self.area == G.consumeables)) then
|
||||||
self.bypass_lock = true
|
self.bypass_lock = true
|
||||||
self.bypass_discovery_center = true
|
self.bypass_discovery_center = true
|
||||||
@ -4203,9 +4235,10 @@ function Card:update(dt)
|
|||||||
if self.ability.name == 'Swashbuckler' then
|
if self.ability.name == 'Swashbuckler' then
|
||||||
local sell_cost = 0
|
local sell_cost = 0
|
||||||
for i = 1, #G.jokers.cards do
|
for i = 1, #G.jokers.cards do
|
||||||
if G.jokers.cards[i] == self or (self.area and (self.area ~= G.jokers)) then break end
|
if G.jokers.cards[i] ~= self and (G.jokers.cards[i].area and G.jokers.cards[i].area == G.jokers) then
|
||||||
sell_cost = sell_cost + G.jokers.cards[i].sell_cost
|
sell_cost = sell_cost + G.jokers.cards[i].sell_cost
|
||||||
end
|
end
|
||||||
|
end
|
||||||
self.ability.mult = sell_cost
|
self.ability.mult = sell_cost
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@ -4261,6 +4294,7 @@ function Card:align_h_popup()
|
|||||||
0
|
0
|
||||||
},
|
},
|
||||||
type = popup_direction,
|
type = popup_direction,
|
||||||
|
--lr_clamp = true
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -4293,7 +4327,7 @@ end
|
|||||||
|
|
||||||
function Card:juice_up(scale, rot_amount)
|
function Card:juice_up(scale, rot_amount)
|
||||||
--G.VIBRATION = G.VIBRATION + 0.4
|
--G.VIBRATION = G.VIBRATION + 0.4
|
||||||
local rot_amt = rot_amount and 0.4*pseudorandom_element({rot_amount, -rot_amount}) or pseudorandom_element({0.16, -0.16})
|
local rot_amt = rot_amount and 0.4*(math.random()>0.5 and 1 or -1)*rot_amount or (math.random()>0.5 and 1 or -1)*0.16
|
||||||
scale = scale and scale*0.4 or 0.11
|
scale = scale and scale*0.4 or 0.11
|
||||||
Moveable.juice_up(self, scale, rot_amt)
|
Moveable.juice_up(self, scale, rot_amt)
|
||||||
end
|
end
|
||||||
@ -4329,9 +4363,8 @@ function Card:draw(layer)
|
|||||||
|
|
||||||
if (layer == 'card' or layer == 'both') then
|
if (layer == 'card' or layer == 'both') then
|
||||||
-- for all hover/tilting:
|
-- for all hover/tilting:
|
||||||
self.tilt_var = self.overwrite_tilt_var or self.tilt_var or {mx = 0, my = 0, dx = self.tilt_var.dx or 0, dy = self.tilt_var.dy or 0, amt = 0}
|
self.tilt_var = self.tilt_var or {mx = 0, my = 0, dx = self.tilt_var.dx or 0, dy = self.tilt_var.dy or 0, amt = 0}
|
||||||
local tilt_factor = 0.3
|
local tilt_factor = 0.3
|
||||||
if not self.overwrite_tilt_var then
|
|
||||||
if self.states.focus.is then
|
if self.states.focus.is then
|
||||||
self.tilt_var.mx, self.tilt_var.my = G.CONTROLLER.cursor_position.x + self.tilt_var.dx*self.T.w*G.TILESCALE*G.TILESIZE, G.CONTROLLER.cursor_position.y + self.tilt_var.dy*self.T.h*G.TILESCALE*G.TILESIZE
|
self.tilt_var.mx, self.tilt_var.my = G.CONTROLLER.cursor_position.x + self.tilt_var.dx*self.T.w*G.TILESCALE*G.TILESIZE, G.CONTROLLER.cursor_position.y + self.tilt_var.dy*self.T.h*G.TILESCALE*G.TILESIZE
|
||||||
self.tilt_var.amt = math.abs(self.hover_offset.y + self.hover_offset.x - 1 + self.tilt_var.dx + self.tilt_var.dy - 1)*tilt_factor
|
self.tilt_var.amt = math.abs(self.hover_offset.y + self.hover_offset.x - 1 + self.tilt_var.dx + self.tilt_var.dy - 1)*tilt_factor
|
||||||
@ -4344,7 +4377,6 @@ function Card:draw(layer)
|
|||||||
self.tilt_var.my = ((0.5 + 0.5*self.ambient_tilt*math.sin(tilt_angle))*self.VT.h+self.VT.y+G.ROOM.T.y)*G.TILESIZE*G.TILESCALE
|
self.tilt_var.my = ((0.5 + 0.5*self.ambient_tilt*math.sin(tilt_angle))*self.VT.h+self.VT.y+G.ROOM.T.y)*G.TILESIZE*G.TILESCALE
|
||||||
self.tilt_var.amt = self.ambient_tilt*(0.5+math.cos(tilt_angle))*tilt_factor
|
self.tilt_var.amt = self.ambient_tilt*(0.5+math.cos(tilt_angle))*tilt_factor
|
||||||
end
|
end
|
||||||
end
|
|
||||||
--Any particles
|
--Any particles
|
||||||
if self.children.particles then self.children.particles:draw() end
|
if self.children.particles then self.children.particles:draw() end
|
||||||
|
|
||||||
@ -4404,7 +4436,7 @@ function Card:draw(layer)
|
|||||||
end
|
end
|
||||||
|
|
||||||
--If the card has any edition/seal, add that here
|
--If the card has any edition/seal, add that here
|
||||||
if self.edition or self.seal or self.ability.eternal or self.sticker or self.ability.set == 'Spectral' or self.debuff or self.greyed or self.ability.name == 'The Soul' or self.ability.set == 'Voucher' or self.ability.set == 'Booster' or self.config.center.soul_pos or self.config.center.demo then
|
if self.edition or self.seal or self.ability.eternal or self.ability.rental or self.ability.perishable or self.sticker or self.ability.set == 'Spectral' or self.debuff or self.greyed or self.ability.name == 'The Soul' or self.ability.set == 'Voucher' or self.ability.set == 'Booster' or self.config.center.soul_pos or self.config.center.demo then
|
||||||
if (self.ability.set == 'Voucher' or self.config.center.demo) and (self.ability.name ~= 'Antimatter' or not (self.config.center.discovered or self.bypass_discovery_center)) then
|
if (self.ability.set == 'Voucher' or self.config.center.demo) and (self.ability.name ~= 'Antimatter' or not (self.config.center.discovered or self.bypass_discovery_center)) then
|
||||||
self.children.center:draw_shader('voucher', nil, self.ARGS.send_to_shader)
|
self.children.center:draw_shader('voucher', nil, self.ARGS.send_to_shader)
|
||||||
end
|
end
|
||||||
@ -4442,6 +4474,16 @@ function Card:draw(layer)
|
|||||||
G.shared_sticker_eternal:draw_shader('dissolve', nil, nil, nil, self.children.center)
|
G.shared_sticker_eternal:draw_shader('dissolve', nil, nil, nil, self.children.center)
|
||||||
G.shared_sticker_eternal:draw_shader('voucher', nil, self.ARGS.send_to_shader, nil, self.children.center)
|
G.shared_sticker_eternal:draw_shader('voucher', nil, self.ARGS.send_to_shader, nil, self.children.center)
|
||||||
end
|
end
|
||||||
|
if self.ability.perishable then
|
||||||
|
G.shared_sticker_perishable.role.draw_major = self
|
||||||
|
G.shared_sticker_perishable:draw_shader('dissolve', nil, nil, nil, self.children.center)
|
||||||
|
G.shared_sticker_perishable:draw_shader('voucher', nil, self.ARGS.send_to_shader, nil, self.children.center)
|
||||||
|
end
|
||||||
|
if self.ability.rental then
|
||||||
|
G.shared_sticker_rental.role.draw_major = self
|
||||||
|
G.shared_sticker_rental:draw_shader('dissolve', nil, nil, nil, self.children.center)
|
||||||
|
G.shared_sticker_rental:draw_shader('voucher', nil, self.ARGS.send_to_shader, nil, self.children.center)
|
||||||
|
end
|
||||||
if self.sticker and G.shared_stickers[self.sticker] then
|
if self.sticker and G.shared_stickers[self.sticker] then
|
||||||
G.shared_stickers[self.sticker].role.draw_major = self
|
G.shared_stickers[self.sticker].role.draw_major = self
|
||||||
G.shared_stickers[self.sticker]:draw_shader('dissolve', nil, nil, nil, self.children.center)
|
G.shared_stickers[self.sticker]:draw_shader('dissolve', nil, nil, nil, self.children.center)
|
||||||
@ -4487,7 +4529,12 @@ function Card:draw(layer)
|
|||||||
elseif self.sprite_facing == 'back' then
|
elseif self.sprite_facing == 'back' then
|
||||||
local overlay = G.C.WHITE
|
local overlay = G.C.WHITE
|
||||||
if self.area and self.area.config.type == 'deck' and self.rank > 3 then
|
if self.area and self.area.config.type == 'deck' and self.rank > 3 then
|
||||||
overlay = {0.5 + ((#self.area.cards - self.rank)%7)/50, 0.5 + ((#self.area.cards - self.rank)%7)/50, 0.5 +((#self.area.cards - self.rank)%7)/50, 1}
|
self.back_overlay = self.back_overlay or {}
|
||||||
|
self.back_overlay[1] = 0.5 + ((#self.area.cards - self.rank)%7)/50
|
||||||
|
self.back_overlay[2] = 0.5 + ((#self.area.cards - self.rank)%7)/50
|
||||||
|
self.back_overlay[3] = 0.5 + ((#self.area.cards - self.rank)%7)/50
|
||||||
|
self.back_overlay[4] = 1
|
||||||
|
overlay = self.back_overlay
|
||||||
end
|
end
|
||||||
|
|
||||||
if self.area and self.area.config.type == 'deck' then
|
if self.area and self.area.config.type == 'deck' then
|
||||||
@ -4503,23 +4550,8 @@ function Card:draw(layer)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if self.children.overwrite and self.tilt_var then
|
|
||||||
|
|
||||||
self.children.overwrite.overwrite_tilt_var = copy_table(self.tilt_var)
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
for k, v in pairs(self.children) do
|
for k, v in pairs(self.children) do
|
||||||
if k ~= 'focused_ui' and k ~= "front" and k ~= "overwrite" and k ~= "back" and k ~= "soul_parts" and k ~= "center" and k ~= 'floating_sprite' and k~= "shadow" and k~= "use_button" and k ~= 'buy_button' and k ~= 'buy_and_use_button' and k~= "debuff" and k ~= 'price' and k~= 'particles' and k ~= 'h_popup' then v:draw() end
|
if k ~= 'focused_ui' and k ~= "front" and k ~= "back" and k ~= "soul_parts" and k ~= "center" and k ~= 'floating_sprite' and k~= "shadow" and k~= "use_button" and k ~= 'buy_button' and k ~= 'buy_and_use_button' and k~= "debuff" and k ~= 'price' and k~= 'particles' and k ~= 'h_popup' then v:draw() end
|
||||||
end
|
|
||||||
|
|
||||||
if self.children.overwrite then
|
|
||||||
love.graphics.push()
|
|
||||||
love.graphics.setColor(G.C.BLUE)
|
|
||||||
G.BRUTE_OVERLAY = {1,1,1,math.sin(5*G.TIMERS.REAL)}
|
|
||||||
self.children.overwrite:draw('card')
|
|
||||||
G.BRUTE_OVERLAY = nil
|
|
||||||
love.graphics.pop()
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if (layer == 'card' or layer == 'both') and self.area == G.hand then
|
if (layer == 'card' or layer == 'both') and self.area == G.hand then
|
||||||
@ -4632,6 +4664,10 @@ function Card:load(cardTable, other_card)
|
|||||||
elseif self.config.center.name == "Photograph" then
|
elseif self.config.center.name == "Photograph" then
|
||||||
self.T.h = H*scale/1.2*scale
|
self.T.h = H*scale/1.2*scale
|
||||||
self.T.w = W*scale
|
self.T.w = W*scale
|
||||||
|
elseif self.config.center.name == "Square Joker" then
|
||||||
|
H = W
|
||||||
|
self.T.h = H*scale
|
||||||
|
self.T.w = W*scale
|
||||||
elseif self.config.center.set == 'Booster' then
|
elseif self.config.center.set == 'Booster' then
|
||||||
self.T.h = H*1.27
|
self.T.h = H*1.27
|
||||||
self.T.w = W*1.27
|
self.T.w = W*1.27
|
||||||
@ -4683,6 +4719,13 @@ function Card:remove()
|
|||||||
if self.area then self.area:remove_card(self) end
|
if self.area then self.area:remove_card(self) end
|
||||||
|
|
||||||
self:remove_from_deck()
|
self:remove_from_deck()
|
||||||
|
if self.ability.queue_negative_removal then
|
||||||
|
if self.ability.consumeable then
|
||||||
|
G.consumeables.config.card_limit = G.consumeables.config.card_limit - 1
|
||||||
|
else
|
||||||
|
G.jokers.config.card_limit = G.jokers.config.card_limit - 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if not G.OVERLAY_MENU then
|
if not G.OVERLAY_MENU then
|
||||||
for k, v in pairs(G.P_CENTERS) do
|
for k, v in pairs(G.P_CENTERS) do
|
||||||
|
22
cardarea.lua
@ -436,12 +436,12 @@ function CardArea:align_cards()
|
|||||||
if self.config.type == 'hand' and (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK or G.STATE == G.STATES.PLANET_PACK) then
|
if self.config.type == 'hand' and (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK or G.STATE == G.STATES.PLANET_PACK) then
|
||||||
for k, card in ipairs(self.cards) do
|
for k, card in ipairs(self.cards) do
|
||||||
if not card.states.drag.is then
|
if not card.states.drag.is then
|
||||||
card.T.r = 0.4*(-#self.cards/2 - 0.5 + k)/(#self.cards)+ 0.02*math.sin(2*G.TIMERS.REAL+card.T.x)
|
card.T.r = 0.4*(-#self.cards/2 - 0.5 + k)/(#self.cards)+ (G.SETTINGS.reduced_motion and 0 or 1)*0.02*math.sin(2*G.TIMERS.REAL+card.T.x)
|
||||||
local max_cards = math.max(#self.cards, self.config.temp_limit)
|
local max_cards = math.max(#self.cards, self.config.temp_limit)
|
||||||
card.T.x = self.T.x + (self.T.w-self.card_w)*((k-1)/math.max(max_cards-1, 1) - 0.5*(#self.cards-max_cards)/math.max(max_cards-1, 1)) + 0.5*(self.card_w - card.T.w)
|
card.T.x = self.T.x + (self.T.w-self.card_w)*((k-1)/math.max(max_cards-1, 1) - 0.5*(#self.cards-max_cards)/math.max(max_cards-1, 1)) + 0.5*(self.card_w - card.T.w)
|
||||||
local highlight_height = G.HIGHLIGHT_H
|
local highlight_height = G.HIGHLIGHT_H
|
||||||
if not card.highlighted then highlight_height = 0 end
|
if not card.highlighted then highlight_height = 0 end
|
||||||
card.T.y = G.hand.T.y - 1.8*card.T.h - highlight_height + 0.1*math.sin(0.666*G.TIMERS.REAL+card.T.x) + math.abs(1.3*(-#self.cards/2 + k-0.5)/(#self.cards))^2-0.3
|
card.T.y = G.hand.T.y - 1.8*card.T.h - highlight_height + (G.SETTINGS.reduced_motion and 0 or 1)*0.1*math.sin(0.666*G.TIMERS.REAL+card.T.x) + math.abs(1.3*(-#self.cards/2 + k-0.5)/(#self.cards))^2-0.3
|
||||||
card.T.x = card.T.x + card.shadow_parrallax.x/30
|
card.T.x = card.T.x + card.shadow_parrallax.x/30
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -451,13 +451,13 @@ function CardArea:align_cards()
|
|||||||
|
|
||||||
for k, card in ipairs(self.cards) do
|
for k, card in ipairs(self.cards) do
|
||||||
if not card.states.drag.is then
|
if not card.states.drag.is then
|
||||||
card.T.r = 0.2*(-#self.cards/2 - 0.5 + k)/(#self.cards)+ 0.02*math.sin(2*G.TIMERS.REAL+card.T.x)
|
card.T.r = 0.2*(-#self.cards/2 - 0.5 + k)/(#self.cards)+ (G.SETTINGS.reduced_motion and 0 or 1)*0.02*math.sin(2*G.TIMERS.REAL+card.T.x)
|
||||||
local max_cards = math.max(#self.cards, self.config.temp_limit)
|
local max_cards = math.max(#self.cards, self.config.temp_limit)
|
||||||
card.T.x = self.T.x + (self.T.w-self.card_w)*((k-1)/math.max(max_cards-1, 1) - 0.5*(#self.cards-max_cards)/math.max(max_cards-1, 1)) + 0.5*(self.card_w - card.T.w)
|
card.T.x = self.T.x + (self.T.w-self.card_w)*((k-1)/math.max(max_cards-1, 1) - 0.5*(#self.cards-max_cards)/math.max(max_cards-1, 1)) + 0.5*(self.card_w - card.T.w)
|
||||||
|
|
||||||
local highlight_height = G.HIGHLIGHT_H
|
local highlight_height = G.HIGHLIGHT_H
|
||||||
if not card.highlighted then highlight_height = 0 end
|
if not card.highlighted then highlight_height = 0 end
|
||||||
card.T.y = self.T.y + self.T.h/2 - card.T.h/2 - highlight_height + 0.03*math.sin(0.666*G.TIMERS.REAL+card.T.x) + math.abs(0.5*(-#self.cards/2 + k-0.5)/(#self.cards))-0.2
|
card.T.y = self.T.y + self.T.h/2 - card.T.h/2 - highlight_height + (G.SETTINGS.reduced_motion and 0 or 1)*0.03*math.sin(0.666*G.TIMERS.REAL+card.T.x) + math.abs(0.5*(-#self.cards/2 + k-0.5)/(#self.cards))-0.2
|
||||||
card.T.x = card.T.x + card.shadow_parrallax.x/30
|
card.T.x = card.T.x + card.shadow_parrallax.x/30
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -466,12 +466,12 @@ function CardArea:align_cards()
|
|||||||
if self.config.type == 'title' or (self.config.type == 'voucher' and #self.cards == 1) then
|
if self.config.type == 'title' or (self.config.type == 'voucher' and #self.cards == 1) then
|
||||||
for k, card in ipairs(self.cards) do
|
for k, card in ipairs(self.cards) do
|
||||||
if not card.states.drag.is then
|
if not card.states.drag.is then
|
||||||
card.T.r = 0.2*(-#self.cards/2 - 0.5 + k)/(#self.cards)+ 0.02*math.sin(2*G.TIMERS.REAL+card.T.x)
|
card.T.r = 0.2*(-#self.cards/2 - 0.5 + k)/(#self.cards)+ (G.SETTINGS.reduced_motion and 0 or 1)*0.02*math.sin(2*G.TIMERS.REAL+card.T.x)
|
||||||
local max_cards = math.max(#self.cards, self.config.temp_limit)
|
local max_cards = math.max(#self.cards, self.config.temp_limit)
|
||||||
card.T.x = self.T.x + (self.T.w-self.card_w)*((k-1)/math.max(max_cards-1, 1) - 0.5*(#self.cards-max_cards)/math.max(max_cards-1, 1)) + 0.5*(self.card_w - card.T.w)
|
card.T.x = self.T.x + (self.T.w-self.card_w)*((k-1)/math.max(max_cards-1, 1) - 0.5*(#self.cards-max_cards)/math.max(max_cards-1, 1)) + 0.5*(self.card_w - card.T.w)
|
||||||
local highlight_height = G.HIGHLIGHT_H
|
local highlight_height = G.HIGHLIGHT_H
|
||||||
if not card.highlighted then highlight_height = 0 end
|
if not card.highlighted then highlight_height = 0 end
|
||||||
card.T.y = self.T.y + self.T.h/2 - card.T.h/2 - highlight_height + 0.03*math.sin(0.666*G.TIMERS.REAL+card.T.x) + math.abs(0.5*(-#self.cards/2 + k-0.5)/(#self.cards))-(#self.cards>1 and 0.2 or 0)
|
card.T.y = self.T.y + self.T.h/2 - card.T.h/2 - highlight_height + (G.SETTINGS.reduced_motion and 0 or 1)*0.03*math.sin(0.666*G.TIMERS.REAL+card.T.x) + math.abs(0.5*(-#self.cards/2 + k-0.5)/(#self.cards))-(#self.cards>1 and 0.2 or 0)
|
||||||
card.T.x = card.T.x + card.shadow_parrallax.x/30
|
card.T.x = card.T.x + card.shadow_parrallax.x/30
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -481,12 +481,12 @@ function CardArea:align_cards()
|
|||||||
local self_w = math.max(self.T.w, 3.2)
|
local self_w = math.max(self.T.w, 3.2)
|
||||||
for k, card in ipairs(self.cards) do
|
for k, card in ipairs(self.cards) do
|
||||||
if not card.states.drag.is then
|
if not card.states.drag.is then
|
||||||
card.T.r = 0.2*(-#self.cards/2 - 0.5 + k)/(#self.cards)+ 0.02*math.sin(2*G.TIMERS.REAL+card.T.x+card.T.y) + (k%2 == 0 and 1 or -1)*0.08
|
card.T.r = 0.2*(-#self.cards/2 - 0.5 + k)/(#self.cards)+ (G.SETTINGS.reduced_motion and 0 or 1)*0.02*math.sin(2*G.TIMERS.REAL+card.T.x+card.T.y) + (k%2 == 0 and 1 or -1)*0.08
|
||||||
local max_cards = math.max(#self.cards, self.config.temp_limit)
|
local max_cards = math.max(#self.cards, self.config.temp_limit)
|
||||||
card.T.x = self.T.x + (self_w-self.card_w)*((k-1)/math.max(max_cards-1, 1) - 0.5*(#self.cards-max_cards)/math.max(max_cards-1, 1)) + 0.5*(self.card_w - card.T.w) + (k%2 == 1 and 1 or -1)*0.27 + (self.T.w-self_w)/2
|
card.T.x = self.T.x + (self_w-self.card_w)*((k-1)/math.max(max_cards-1, 1) - 0.5*(#self.cards-max_cards)/math.max(max_cards-1, 1)) + 0.5*(self.card_w - card.T.w) + (k%2 == 1 and 1 or -1)*0.27 + (self.T.w-self_w)/2
|
||||||
local highlight_height = G.HIGHLIGHT_H
|
local highlight_height = G.HIGHLIGHT_H
|
||||||
if not card.highlighted then highlight_height = 0 end
|
if not card.highlighted then highlight_height = 0 end
|
||||||
card.T.y = self.T.y + self.T.h/2 - card.T.h/2 - highlight_height + 0.03*math.sin(0.666*G.TIMERS.REAL+card.T.x) + math.abs(0.5*(-#self.cards/2 + k-0.5)/(#self.cards))-(#self.cards>1 and 0.2 or 0)
|
card.T.y = self.T.y + self.T.h/2 - card.T.h/2 - highlight_height + (G.SETTINGS.reduced_motion and 0 or 1)*0.03*math.sin(0.666*G.TIMERS.REAL+card.T.x) + math.abs(0.5*(-#self.cards/2 + k-0.5)/(#self.cards))-(#self.cards>1 and 0.2 or 0)
|
||||||
card.T.x = card.T.x + card.shadow_parrallax.x/30
|
card.T.x = card.T.x + card.shadow_parrallax.x/30
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -509,7 +509,7 @@ function CardArea:align_cards()
|
|||||||
if self.config.type == 'joker' or self.config.type == 'title_2' then
|
if self.config.type == 'joker' or self.config.type == 'title_2' then
|
||||||
for k, card in ipairs(self.cards) do
|
for k, card in ipairs(self.cards) do
|
||||||
if not card.states.drag.is then
|
if not card.states.drag.is then
|
||||||
card.T.r = 0.1*(-#self.cards/2 - 0.5 + k)/(#self.cards)+ 0.02*math.sin(2*G.TIMERS.REAL+card.T.x)
|
card.T.r = 0.1*(-#self.cards/2 - 0.5 + k)/(#self.cards)+ (G.SETTINGS.reduced_motion and 0 or 1)*0.02*math.sin(2*G.TIMERS.REAL+card.T.x)
|
||||||
local max_cards = math.max(#self.cards, self.config.temp_limit)
|
local max_cards = math.max(#self.cards, self.config.temp_limit)
|
||||||
card.T.x = self.T.x + (self.T.w-self.card_w)*((k-1)/math.max(max_cards-1, 1) - 0.5*(#self.cards-max_cards)/math.max(max_cards-1, 1)) + 0.5*(self.card_w - card.T.w)
|
card.T.x = self.T.x + (self.T.w-self.card_w)*((k-1)/math.max(max_cards-1, 1) - 0.5*(#self.cards-max_cards)/math.max(max_cards-1, 1)) + 0.5*(self.card_w - card.T.w)
|
||||||
if #self.cards > 2 or (#self.cards > 1 and self == G.consumeables) or (#self.cards > 1 and self.config.spread) then
|
if #self.cards > 2 or (#self.cards > 1 and self == G.consumeables) or (#self.cards > 1 and self.config.spread) then
|
||||||
@ -521,7 +521,7 @@ function CardArea:align_cards()
|
|||||||
end
|
end
|
||||||
local highlight_height = G.HIGHLIGHT_H/2
|
local highlight_height = G.HIGHLIGHT_H/2
|
||||||
if not card.highlighted then highlight_height = 0 end
|
if not card.highlighted then highlight_height = 0 end
|
||||||
card.T.y = self.T.y + self.T.h/2 - card.T.h/2 - highlight_height+ 0.03*math.sin(0.666*G.TIMERS.REAL+card.T.x)
|
card.T.y = self.T.y + self.T.h/2 - card.T.h/2 - highlight_height+ (G.SETTINGS.reduced_motion and 0 or 1)*0.03*math.sin(0.666*G.TIMERS.REAL+card.T.x)
|
||||||
card.T.x = card.T.x + card.shadow_parrallax.x/30
|
card.T.x = card.T.x + card.shadow_parrallax.x/30
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -537,7 +537,7 @@ function CardArea:align_cards()
|
|||||||
end
|
end
|
||||||
local highlight_height = G.HIGHLIGHT_H
|
local highlight_height = G.HIGHLIGHT_H
|
||||||
if not card.highlighted then highlight_height = 0 end
|
if not card.highlighted then highlight_height = 0 end
|
||||||
card.T.y = self.T.y + self.T.h/2 - card.T.h/2 - highlight_height + (not card.highlighted and 0.05*math.sin(2*1.666*G.TIMERS.REAL+card.T.x) or 0)
|
card.T.y = self.T.y + self.T.h/2 - card.T.h/2 - highlight_height + (not card.highlighted and (G.SETTINGS.reduced_motion and 0 or 1)*0.05*math.sin(2*1.666*G.TIMERS.REAL+card.T.x) or 0)
|
||||||
card.T.x = card.T.x + card.shadow_parrallax.x/30
|
card.T.x = card.T.x + card.shadow_parrallax.x/30
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -55,7 +55,7 @@ G.CHALLENGES = {
|
|||||||
{id = 'tag_handy'},
|
{id = 'tag_handy'},
|
||||||
},
|
},
|
||||||
banned_other = {
|
banned_other = {
|
||||||
|
{id = 'bl_wall', type = 'blind'}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},]]--
|
},]]--
|
||||||
@ -246,6 +246,7 @@ G.CHALLENGES = {
|
|||||||
banned_tags = {
|
banned_tags = {
|
||||||
},
|
},
|
||||||
banned_other = {
|
banned_other = {
|
||||||
|
{id = 'bl_plant', type = 'blind'},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -314,6 +315,7 @@ G.CHALLENGES = {
|
|||||||
banned_tags = {
|
banned_tags = {
|
||||||
},
|
},
|
||||||
banned_other = {
|
banned_other = {
|
||||||
|
{id = 'bl_final_leaf', type = 'blind'},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -401,6 +403,7 @@ G.CHALLENGES = {
|
|||||||
banned_tags = {
|
banned_tags = {
|
||||||
},
|
},
|
||||||
banned_other = {
|
banned_other = {
|
||||||
|
{id = 'bl_final_leaf', type = 'blind'},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -709,6 +712,7 @@ G.CHALLENGES = {
|
|||||||
{id = 'c_judgement'},
|
{id = 'c_judgement'},
|
||||||
{id = 'c_wraith'},
|
{id = 'c_wraith'},
|
||||||
{id = 'c_soul'},
|
{id = 'c_soul'},
|
||||||
|
{id = 'v_antimatter'},
|
||||||
{id = 'p_buffoon_normal_1', ids = {
|
{id = 'p_buffoon_normal_1', ids = {
|
||||||
'p_buffoon_normal_1','p_buffoon_normal_2','p_buffoon_jumbo_1','p_buffoon_mega_1',
|
'p_buffoon_normal_1','p_buffoon_normal_2','p_buffoon_jumbo_1','p_buffoon_mega_1',
|
||||||
}},
|
}},
|
||||||
@ -721,8 +725,13 @@ G.CHALLENGES = {
|
|||||||
{id = 'tag_negative'},
|
{id = 'tag_negative'},
|
||||||
{id = 'tag_foil'},
|
{id = 'tag_foil'},
|
||||||
{id = 'tag_buffoon'},
|
{id = 'tag_buffoon'},
|
||||||
|
{id = 'tag_top_up'},
|
||||||
|
|
||||||
},
|
},
|
||||||
banned_other = {
|
banned_other = {
|
||||||
|
{id = 'bl_final_acorn', type = 'blind'},
|
||||||
|
{id = 'bl_final_heart', type = 'blind'},
|
||||||
|
{id = 'bl_final_leaf', type = 'blind'}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
2
conf.lua
@ -2,8 +2,6 @@ _RELEASE_MODE = true
|
|||||||
_DEMO = false
|
_DEMO = false
|
||||||
|
|
||||||
function love.conf(t)
|
function love.conf(t)
|
||||||
os.execute("set LOVE_GRAPHICS_USE_OPENGLES=1")
|
|
||||||
|
|
||||||
t.console = not _RELEASE_MODE
|
t.console = not _RELEASE_MODE
|
||||||
t.title = 'Balatro'
|
t.title = 'Balatro'
|
||||||
t.window.width = 0
|
t.window.width = 0
|
||||||
|
@ -108,6 +108,7 @@ function Moveable:set_alignment(args)
|
|||||||
args.offset = nil
|
args.offset = nil
|
||||||
end
|
end
|
||||||
self.alignment.offset = args.offset or self.alignment.offset
|
self.alignment.offset = args.offset or self.alignment.offset
|
||||||
|
self.alignment.lr_clamp = args.lr_clamp
|
||||||
end
|
end
|
||||||
|
|
||||||
function Moveable:align_to_major()
|
function Moveable:align_to_major()
|
||||||
@ -247,6 +248,7 @@ function Moveable:drag(offset)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Moveable:juice_up(amount, rot_amt)
|
function Moveable:juice_up(amount, rot_amt)
|
||||||
|
if G.SETTINGS.reduced_motion then return end
|
||||||
local amount = amount or 0.4
|
local amount = amount or 0.4
|
||||||
|
|
||||||
local end_time = G.TIMERS.REAL + 0.4
|
local end_time = G.TIMERS.REAL + 0.4
|
||||||
@ -275,13 +277,14 @@ end
|
|||||||
|
|
||||||
function Moveable:move(dt)
|
function Moveable:move(dt)
|
||||||
if self.FRAME.MOVE >= G.FRAMES.MOVE then return end
|
if self.FRAME.MOVE >= G.FRAMES.MOVE then return end
|
||||||
|
self.FRAME.OLD_MAJOR = self.FRAME.MAJOR
|
||||||
self.FRAME.MAJOR = nil
|
self.FRAME.MAJOR = nil
|
||||||
self.FRAME.MOVE = G.FRAMES.MOVE
|
self.FRAME.MOVE = G.FRAMES.MOVE
|
||||||
if not self.created_on_pause and G.SETTINGS.paused then return end
|
if not self.created_on_pause and G.SETTINGS.paused then return end
|
||||||
|
|
||||||
--WHY ON EARTH DOES THIS LINE MAKE IT RUN 2X AS FAST???
|
--WHY ON EARTH DOES THIS LINE MAKE IT RUN 2X AS FAST???
|
||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
local timestart = love.timer.getTime()
|
--local timestart = love.timer.getTime()
|
||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
|
|
||||||
self:align_to_major()
|
self:align_to_major()
|
||||||
@ -309,9 +312,20 @@ function Moveable:move(dt)
|
|||||||
self:move_wh(dt)
|
self:move_wh(dt)
|
||||||
self:calculate_parrallax()
|
self:calculate_parrallax()
|
||||||
end
|
end
|
||||||
|
if self.alignment and self.alignment.lr_clamp then
|
||||||
|
self:lr_clamp()
|
||||||
|
end
|
||||||
|
|
||||||
self.NEW_ALIGNMENT = false
|
self.NEW_ALIGNMENT = false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Moveable:lr_clamp()
|
||||||
|
if self.T.x < 0 then self.T.x = 0 end
|
||||||
|
if self.VT.x < 0 then self.VT.x = 0 end
|
||||||
|
if (self.T.x + self.T.w) > G.ROOM.T.w then self.T.x = G.ROOM.T.w - self.T.w end
|
||||||
|
if (self.VT.x + self.VT.w) > G.ROOM.T.w then self.VT.x = G.ROOM.T.w - self.VT.w end
|
||||||
|
end
|
||||||
|
|
||||||
function Moveable:glue_to_major(major_tab)
|
function Moveable:glue_to_major(major_tab)
|
||||||
self.T = major_tab.T
|
self.T = major_tab.T
|
||||||
|
|
||||||
@ -326,21 +340,19 @@ function Moveable:glue_to_major(major_tab)
|
|||||||
self.shadow_parrallax = major_tab.shadow_parrallax
|
self.shadow_parrallax = major_tab.shadow_parrallax
|
||||||
end
|
end
|
||||||
|
|
||||||
|
MWM = {
|
||||||
|
rotated_offset = {},
|
||||||
|
angles = {},
|
||||||
|
WH = {},
|
||||||
|
offs = {},
|
||||||
|
}
|
||||||
|
|
||||||
function Moveable:move_with_major(dt)
|
function Moveable:move_with_major(dt)
|
||||||
if self.role.role_type ~= 'Minor' then return end
|
if self.role.role_type ~= 'Minor' then return end
|
||||||
local major_tab = self.role.major:get_major()
|
local major_tab = self.role.major:get_major()
|
||||||
|
|
||||||
self:move_juice(dt)
|
self:move_juice(dt)
|
||||||
|
|
||||||
if not MWM then
|
|
||||||
MWM = {
|
|
||||||
rotated_offset = {},
|
|
||||||
angles = {},
|
|
||||||
WH = {},
|
|
||||||
offs = {},
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
if self.role.r_bond == 'Weak' then
|
if self.role.r_bond == 'Weak' then
|
||||||
MWM.rotated_offset.x, MWM.rotated_offset.y = self.role.offset.x + major_tab.offset.x,self.role.offset.y+major_tab.offset.y
|
MWM.rotated_offset.x, MWM.rotated_offset.y = self.role.offset.x + major_tab.offset.x,self.role.offset.y+major_tab.offset.y
|
||||||
else
|
else
|
||||||
@ -471,10 +483,11 @@ function Moveable:get_major()
|
|||||||
if ( self.role.role_type ~= 'Major' and self.role.major ~= self) and (self.role.xy_bond ~= 'Weak' and self.role.r_bond ~= 'Weak') then
|
if ( self.role.role_type ~= 'Major' and self.role.major ~= self) and (self.role.xy_bond ~= 'Weak' and self.role.r_bond ~= 'Weak') then
|
||||||
--First, does the major already have their offset precalculated for this frame?
|
--First, does the major already have their offset precalculated for this frame?
|
||||||
if not self.FRAME.MAJOR or (G.REFRESH_FRAME_MAJOR_CACHE) then
|
if not self.FRAME.MAJOR or (G.REFRESH_FRAME_MAJOR_CACHE) then
|
||||||
self.FRAME.MAJOR = EMPTY(self.FRAME.MAJOR)
|
self.FRAME.MAJOR = self.FRAME.MAJOR or EMPTY(self.FRAME.OLD_MAJOR)
|
||||||
|
self.temp_offs = EMPTY(self.temp_offs)
|
||||||
local major = self.role.major:get_major()
|
local major = self.role.major:get_major()
|
||||||
self.FRAME.MAJOR.major = major.major
|
self.FRAME.MAJOR.major = major.major
|
||||||
self.FRAME.MAJOR.offset = self.FRAME.MAJOR.offset or {}
|
self.FRAME.MAJOR.offset = self.FRAME.MAJOR.offset or self.temp_offs
|
||||||
self.FRAME.MAJOR.offset.x, self.FRAME.MAJOR.offset.y = major.offset.x + self.role.offset.x + self.layered_parallax.x, major.offset.y + self.role.offset.y + self.layered_parallax.y
|
self.FRAME.MAJOR.offset.x, self.FRAME.MAJOR.offset.y = major.offset.x + self.role.offset.x + self.layered_parallax.x, major.offset.y + self.role.offset.y + self.layered_parallax.y
|
||||||
end
|
end
|
||||||
return self.FRAME.MAJOR
|
return self.FRAME.MAJOR
|
||||||
@ -488,14 +501,16 @@ function Moveable:get_major()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Moveable:remove()
|
function Moveable:remove()
|
||||||
for k, v in ipairs(G.MOVEABLES) do
|
for k, v in pairs(G.MOVEABLES) do
|
||||||
if v == self then
|
if v == self then
|
||||||
table.remove(G.MOVEABLES, k)
|
table.remove(G.MOVEABLES, k)
|
||||||
|
break;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for k, v in ipairs(G.I.MOVEABLE) do
|
for k, v in pairs(G.I.MOVEABLE) do
|
||||||
if v == self then
|
if v == self then
|
||||||
table.remove(G.I.MOVEABLE, k)
|
table.remove(G.I.MOVEABLE, k)
|
||||||
|
break;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Node.remove(self)
|
Node.remove(self)
|
||||||
|
@ -318,19 +318,19 @@ end
|
|||||||
--Also calls the remove method of all children to have them do the same
|
--Also calls the remove method of all children to have them do the same
|
||||||
function Node:remove()
|
function Node:remove()
|
||||||
|
|
||||||
for k, v in ipairs(G.I.POPUP) do
|
for k, v in pairs(G.I.POPUP) do
|
||||||
if v == self then
|
if v == self then
|
||||||
table.remove(G.I.POPUP, k)
|
table.remove(G.I.POPUP, k)
|
||||||
break;
|
break;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for k, v in ipairs(G.I.NODE) do
|
for k, v in pairs(G.I.NODE) do
|
||||||
if v == self then
|
if v == self then
|
||||||
table.remove(G.I.NODE, k)
|
table.remove(G.I.NODE, k)
|
||||||
break;
|
break;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for k, v in ipairs(G.STAGE_OBJECTS[G.STAGE]) do
|
for k, v in pairs(G.STAGE_OBJECTS[G.STAGE]) do
|
||||||
if v == self then
|
if v == self then
|
||||||
table.remove(G.STAGE_OBJECTS[G.STAGE], k)
|
table.remove(G.STAGE_OBJECTS[G.STAGE], k)
|
||||||
break;
|
break;
|
||||||
|
@ -71,6 +71,7 @@ function Sprite:define_draw_steps(draw_step_definitions)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Sprite:draw_shader(_shader, _shadow_height, _send, _no_tilt, other_obj, ms, mr, mx, my, custom_shader, tilt_shadow)
|
function Sprite:draw_shader(_shader, _shadow_height, _send, _no_tilt, other_obj, ms, mr, mx, my, custom_shader, tilt_shadow)
|
||||||
|
if G.SETTINGS.reduced_motion then _no_tilt = true end
|
||||||
local _draw_major = self.role.draw_major or self
|
local _draw_major = self.role.draw_major or self
|
||||||
if _shadow_height then
|
if _shadow_height then
|
||||||
self.VT.y = self.VT.y - _draw_major.shadow_parrallax.y*_shadow_height
|
self.VT.y = self.VT.y - _draw_major.shadow_parrallax.y*_shadow_height
|
||||||
|
@ -212,27 +212,27 @@ function DynaText:align_letters()
|
|||||||
end
|
end
|
||||||
letter.r = 0
|
letter.r = 0
|
||||||
letter.scale = 1
|
letter.scale = 1
|
||||||
if self.config.rotate then letter.r = (self.config.rotate == 2 and -1 or 1)*(0.2*(-#self.strings[self.focused_string].letters/2 - 0.5 + k)/(#self.strings[self.focused_string].letters)+ 0.02*math.sin(2*G.TIMERS.REAL+k)) end
|
if self.config.rotate then letter.r = (self.config.rotate == 2 and -1 or 1)*(0.2*(-#self.strings[self.focused_string].letters/2 - 0.5 + k)/(#self.strings[self.focused_string].letters)+ (G.SETTINGS.reduced_motion and 0 or 1)*0.02*math.sin(2*G.TIMERS.REAL+k)) end
|
||||||
if self.config.pulse then
|
if self.config.pulse then
|
||||||
letter.scale = letter.scale + (1/self.config.pulse.width)*self.config.pulse.amount*(math.max(
|
letter.scale = letter.scale + (G.SETTINGS.reduced_motion and 0 or 1)*(1/self.config.pulse.width)*self.config.pulse.amount*(math.max(
|
||||||
math.min((self.config.pulse.start - G.TIMERS.REAL)*self.config.pulse.speed + k + self.config.pulse.width,
|
math.min((self.config.pulse.start - G.TIMERS.REAL)*self.config.pulse.speed + k + self.config.pulse.width,
|
||||||
(G.TIMERS.REAL - self.config.pulse.start)*self.config.pulse.speed - k + self.config.pulse.width+ 2),
|
(G.TIMERS.REAL - self.config.pulse.start)*self.config.pulse.speed - k + self.config.pulse.width+ 2),
|
||||||
0))
|
0))
|
||||||
letter.r = letter.r + (letter.scale - 1)*(0.02*(-#self.strings[self.focused_string].letters/2 - 0.5 + k))
|
letter.r = letter.r + (G.SETTINGS.reduced_motion and 0 or 1)*(letter.scale - 1)*(0.02*(-#self.strings[self.focused_string].letters/2 - 0.5 + k))
|
||||||
if self.config.pulse.start > G.TIMERS.REAL + 2*self.config.pulse.speed*#self.strings[self.focused_string].letters then
|
if self.config.pulse.start > G.TIMERS.REAL + 2*self.config.pulse.speed*#self.strings[self.focused_string].letters then
|
||||||
self.config.pulse = nil
|
self.config.pulse = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if self.config.quiver then
|
if self.config.quiver then
|
||||||
letter.scale = letter.scale + (0.1*self.config.quiver.amount)
|
letter.scale = letter.scale + (G.SETTINGS.reduced_motion and 0 or 1)*(0.1*self.config.quiver.amount)
|
||||||
letter.r = letter.r + 0.3*self.config.quiver.amount*(
|
letter.r = letter.r + (G.SETTINGS.reduced_motion and 0 or 1)*0.3*self.config.quiver.amount*(
|
||||||
math.sin(41.12342*G.TIMERS.REAL*self.config.quiver.speed + k*1223.2) +
|
math.sin(41.12342*G.TIMERS.REAL*self.config.quiver.speed + k*1223.2) +
|
||||||
math.cos(63.21231*G.TIMERS.REAL*self.config.quiver.speed + k*1112.2)*math.sin(36.1231*G.TIMERS.REAL*self.config.quiver.speed) +
|
math.cos(63.21231*G.TIMERS.REAL*self.config.quiver.speed + k*1112.2)*math.sin(36.1231*G.TIMERS.REAL*self.config.quiver.speed) +
|
||||||
math.cos(95.123*G.TIMERS.REAL*self.config.quiver.speed + k*1233.2) -
|
math.cos(95.123*G.TIMERS.REAL*self.config.quiver.speed + k*1233.2) -
|
||||||
math.sin(30.133421*G.TIMERS.REAL*self.config.quiver.speed + k*123.2))
|
math.sin(30.133421*G.TIMERS.REAL*self.config.quiver.speed + k*123.2))
|
||||||
end
|
end
|
||||||
if self.config.float then letter.offset.y = math.sqrt(self.scale)*(2+(self.font.FONTSCALE/G.TILESIZE)*2000*math.sin(2.666*G.TIMERS.REAL+200*k)) + 60*(letter.scale-1) end
|
if self.config.float then letter.offset.y = (G.SETTINGS.reduced_motion and 0 or 1)*math.sqrt(self.scale)*(2+(self.font.FONTSCALE/G.TILESIZE)*2000*math.sin(2.666*G.TIMERS.REAL+200*k)) + 60*(letter.scale-1) end
|
||||||
if self.config.bump then letter.offset.y = self.bump_amount*math.sqrt(self.scale)*7*math.max(0, (5+self.bump_rate)*math.sin(self.bump_rate*G.TIMERS.REAL+200*k) - 3 - self.bump_rate) end
|
if self.config.bump then letter.offset.y = (G.SETTINGS.reduced_motion and 0 or 1)*self.bump_amount*math.sqrt(self.scale)*7*math.max(0, (5+self.bump_rate)*math.sin(self.bump_rate*G.TIMERS.REAL+200*k) - 3 - self.bump_rate) end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -34,7 +34,8 @@ function UIBox:init(args)
|
|||||||
major = args.config.major,
|
major = args.config.major,
|
||||||
type = args.config.align or args.config.type or '',
|
type = args.config.align or args.config.type or '',
|
||||||
bond = args.config.bond or 'Strong',
|
bond = args.config.bond or 'Strong',
|
||||||
offset = args.config.offset or {x=0,y=0}
|
offset = args.config.offset or {x=0,y=0},
|
||||||
|
lr_clamp = args.config.lr_clamp
|
||||||
})
|
})
|
||||||
self:set_role{
|
self:set_role{
|
||||||
xy_bond = args.config.xy_bond,
|
xy_bond = args.config.xy_bond,
|
||||||
@ -83,6 +84,10 @@ function UIBox:init(args)
|
|||||||
self.VT.y = self.VT.y - self.Mid.role.offset.y + (self.Mid.parent.config.padding or 0)
|
self.VT.y = self.VT.y - self.Mid.role.offset.y + (self.Mid.parent.config.padding or 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if self.alignment and self.alignment.lr_clamp then
|
||||||
|
self:lr_clamp()
|
||||||
|
end
|
||||||
|
|
||||||
self.UIRoot:initialize_VT(true)
|
self.UIRoot:initialize_VT(true)
|
||||||
if getmetatable(self) == UIBox then
|
if getmetatable(self) == UIBox then
|
||||||
if args.config.instance_type then
|
if args.config.instance_type then
|
||||||
@ -268,6 +273,7 @@ function UIBox:remove()
|
|||||||
for k, v in pairs(G.I[self.config.instance_type or 'UIBOX']) do
|
for k, v in pairs(G.I[self.config.instance_type or 'UIBOX']) do
|
||||||
if v == self then
|
if v == self then
|
||||||
table.remove(G.I[self.config.instance_type or 'UIBOX'], k)
|
table.remove(G.I[self.config.instance_type or 'UIBOX'], k)
|
||||||
|
break;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
remove_all(self.children)
|
remove_all(self.children)
|
||||||
@ -682,7 +688,6 @@ function UIElement:draw_self()
|
|||||||
|
|
||||||
if self.config.button_UIE and not self.config.button_UIE.config.button then button_active = false end
|
if self.config.button_UIE and not self.config.button_UIE.config.button then button_active = false end
|
||||||
end
|
end
|
||||||
|
|
||||||
if self.config.colour[4] > 0.01 then
|
if self.config.colour[4] > 0.01 then
|
||||||
if self.UIT == G.UIT.T and self.config.scale then
|
if self.UIT == G.UIT.T and self.config.scale then
|
||||||
self.ARGS.text_parallax = self.ARGS.text_parallax or {}
|
self.ARGS.text_parallax = self.ARGS.text_parallax or {}
|
||||||
|
@ -303,7 +303,7 @@ function G.UIDEF.card_focus_ui(card)
|
|||||||
playing_card_colour[4] = 1.5
|
playing_card_colour[4] = 1.5
|
||||||
if G.hand and card.area == G.hand then ease_value(playing_card_colour, 4, -1.5, nil, 'REAL',nil, 0.2, 'quad') end
|
if G.hand and card.area == G.hand then ease_value(playing_card_colour, 4, -1.5, nil, 'REAL',nil, 0.2, 'quad') end
|
||||||
|
|
||||||
local t_card_norm = {x = card.T.x + card.T.w/2 - G.ROOM.T.w/2, y = card.T.y + card.T.h/2 - G.ROOM.T.h/2}
|
local tcnx, tcny = card.T.x + card.T.w/2 - G.ROOM.T.w/2, card.T.y + card.T.h/2 - G.ROOM.T.h/2
|
||||||
|
|
||||||
local base_background = UIBox{
|
local base_background = UIBox{
|
||||||
T = {card.VT.x,card.VT.y,0,0},
|
T = {card.VT.x,card.VT.y,0,0},
|
||||||
@ -316,15 +316,15 @@ function G.UIDEF.card_focus_ui(card)
|
|||||||
}},
|
}},
|
||||||
config = {
|
config = {
|
||||||
align = 'cm',
|
align = 'cm',
|
||||||
offset = {x= 0.007*t_card_norm.x*card.T.w, y = 0.007*t_card_norm.y*card.T.h},
|
offset = {x= 0.007*tcnx*card.T.w, y = 0.007*tcny*card.T.h},
|
||||||
parent = card,
|
parent = card,
|
||||||
r_bond = (not G.hand or card.area ~= G.hand) and 'Weak' or 'Strong'
|
r_bond = (not G.hand or card.area ~= G.hand) and 'Weak' or 'Strong'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
base_background.set_alignment = function()
|
base_background.set_alignment = function()
|
||||||
local card_norm = {x = card.T.x + card.T.w/2 - G.ROOM.T.w/2, y = card.T.y + card.T.h/2 - G.ROOM.T.h/2}
|
local cnx, cny = card.T.x + card.T.w/2 - G.ROOM.T.w/2, card.T.y + card.T.h/2 - G.ROOM.T.h/2
|
||||||
Moveable.set_alignment(card.children.focused_ui, {offset = {x= 0.007*card_norm.x*card.T.w, y = 0.007*card_norm.y*card.T.h}})
|
Moveable.set_alignment(card.children.focused_ui, {offset = {x= 0.007*cnx*card.T.w, y = 0.007*cny*card.T.h}})
|
||||||
end
|
end
|
||||||
|
|
||||||
local base_attach = base_background:get_UIE_by_ID('ATTACH_TO_ME')
|
local base_attach = base_background:get_UIE_by_ID('ATTACH_TO_ME')
|
||||||
@ -1135,6 +1135,8 @@ end
|
|||||||
function get_badge_colour(key)
|
function get_badge_colour(key)
|
||||||
G.BADGE_COL = G.BADGE_COL or {
|
G.BADGE_COL = G.BADGE_COL or {
|
||||||
eternal = G.C.ETERNAL,
|
eternal = G.C.ETERNAL,
|
||||||
|
perishable = G.C.PERISHABLE,
|
||||||
|
rental = G.C.RENTAL,
|
||||||
foil = G.C.DARK_EDITION,
|
foil = G.C.DARK_EDITION,
|
||||||
holographic = G.C.DARK_EDITION,
|
holographic = G.C.DARK_EDITION,
|
||||||
polychrome = G.C.DARK_EDITION,
|
polychrome = G.C.DARK_EDITION,
|
||||||
@ -2312,6 +2314,7 @@ function G.UIDEF.settings_tab(tab)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
)}),
|
)}),
|
||||||
|
create_toggle({label = localize('b_reduced_motion'), ref_table = G.SETTINGS, ref_value = 'reduced_motion'}),
|
||||||
G.F_CRASH_REPORTS and create_toggle({label = localize('b_set_crash_reports'), ref_table = G.SETTINGS, ref_value = 'crashreports', info = localize('ml_crash_report_info')}) or nil,
|
G.F_CRASH_REPORTS and create_toggle({label = localize('b_set_crash_reports'), ref_table = G.SETTINGS, ref_value = 'crashreports', info = localize('ml_crash_report_info')}) or nil,
|
||||||
}}
|
}}
|
||||||
elseif tab == 'Video' then
|
elseif tab == 'Video' then
|
||||||
@ -5270,6 +5273,49 @@ function G.UIDEF.challenge_description_tab(args)
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if challenge.restrictions.banned_other then
|
||||||
|
local other_tab = {}
|
||||||
|
for k, v in pairs(challenge.restrictions.banned_other) do
|
||||||
|
if v.type == 'blind' then
|
||||||
|
other_tab[#other_tab+1] = G.P_BLINDS[v.id]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
table.sort(other_tab, function (a, b) return a.order < b.order end)
|
||||||
|
|
||||||
|
for k, v in ipairs(other_tab) do
|
||||||
|
local temp_blind = AnimatedSprite(0,0,1,1, G.ANIMATION_ATLAS['blind_chips'], v.pos)
|
||||||
|
temp_blind:define_draw_steps({
|
||||||
|
{shader = 'dissolve', shadow_height = 0.05},
|
||||||
|
{shader = 'dissolve'}
|
||||||
|
})
|
||||||
|
temp_blind.float = true
|
||||||
|
temp_blind.states.hover.can = true
|
||||||
|
temp_blind.states.drag.can = false
|
||||||
|
temp_blind.states.collide.can = true
|
||||||
|
temp_blind.config = {blind = v, force_focus = true}
|
||||||
|
temp_blind.hover = function()
|
||||||
|
if not G.CONTROLLER.dragging.target or G.CONTROLLER.using_touch then
|
||||||
|
if not temp_blind.hovering and temp_blind.states.visible then
|
||||||
|
temp_blind.hovering = true
|
||||||
|
temp_blind.hover_tilt = 3
|
||||||
|
temp_blind:juice_up(0.05, 0.02)
|
||||||
|
play_sound('chips1', math.random()*0.1 + 0.55, 0.12)
|
||||||
|
temp_blind.config.h_popup = create_UIBox_blind_popup(v, true)
|
||||||
|
temp_blind.config.h_popup_config ={align = 'cl', offset = {x=-0.1,y=0},parent = temp_blind}
|
||||||
|
Node.hover(temp_blind)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
temp_blind.stop_hover = function() temp_blind.hovering = false; Node.stop_hover(temp_blind); temp_blind.hover_tilt = 0 end
|
||||||
|
|
||||||
|
table.insert(banned_other,
|
||||||
|
{n=G.UIT.R, config={align = "cm", padding = 0}, nodes={
|
||||||
|
{n=G.UIT.O, config={object = temp_blind}}
|
||||||
|
}}
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if not banned_cards[1] then banned_cards[#banned_cards+1] = {n=G.UIT.R, config={align = "cl"}, nodes= localize{type = 'text', key = 'ch_m_none', vars = {}}} end
|
if not banned_cards[1] then banned_cards[#banned_cards+1] = {n=G.UIT.R, config={align = "cl"}, nodes= localize{type = 'text', key = 'ch_m_none', vars = {}}} end
|
||||||
if not banned_tags[1] then banned_tags[#banned_tags+1] = {n=G.UIT.R, config={align = "cl"}, nodes= localize{type = 'text', key = 'ch_c_none', vars = {}}} end
|
if not banned_tags[1] then banned_tags[#banned_tags+1] = {n=G.UIT.R, config={align = "cl"}, nodes= localize{type = 'text', key = 'ch_c_none', vars = {}}} end
|
||||||
@ -5687,11 +5733,13 @@ function G.UIDEF.language_selector()
|
|||||||
table.sort(langs, (function(a, b) return a.label < b.label end))
|
table.sort(langs, (function(a, b) return a.label < b.label end))
|
||||||
local _row = {}
|
local _row = {}
|
||||||
for k, v in ipairs(langs) do
|
for k, v in ipairs(langs) do
|
||||||
|
if not G.F_HIDE_BETA_LANGS or (not v.beta) then
|
||||||
_row[#_row+1] = {n=G.UIT.C, config={align = "cm", func = 'beta_lang_alert', padding = 0.05, r = 0.1, minh = 0.7, minw = 4.5, button = v.beta and 'warn_lang' or 'change_lang', ref_table = v, colour = v.beta and G.C.RED or G.C.BLUE, hover = true, shadow = true, focus_args = {snap_to = (k == 1)}}, nodes={
|
_row[#_row+1] = {n=G.UIT.C, config={align = "cm", func = 'beta_lang_alert', padding = 0.05, r = 0.1, minh = 0.7, minw = 4.5, button = v.beta and 'warn_lang' or 'change_lang', ref_table = v, colour = v.beta and G.C.RED or G.C.BLUE, hover = true, shadow = true, focus_args = {snap_to = (k == 1)}}, nodes={
|
||||||
{n=G.UIT.R, config={align = "cm"}, nodes={
|
{n=G.UIT.R, config={align = "cm"}, nodes={
|
||||||
{n=G.UIT.T, config={text = v.label, lang = v, scale = 0.45, colour = G.C.UI.TEXT_LIGHT, shadow = true}}
|
{n=G.UIT.T, config={text = v.label, lang = v, scale = 0.45, colour = G.C.UI.TEXT_LIGHT, shadow = true}}
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
|
end
|
||||||
if _row[3] or (k == #langs) then
|
if _row[3] or (k == #langs) then
|
||||||
rows[#rows+1] = {n=G.UIT.R, config={align = "cm", padding = 0.1}, nodes=_row}
|
rows[#rows+1] = {n=G.UIT.R, config={align = "cm", padding = 0.1}, nodes=_row}
|
||||||
_row = {}
|
_row = {}
|
||||||
@ -5704,12 +5752,12 @@ function G.UIDEF.language_selector()
|
|||||||
|
|
||||||
local t = create_UIBox_generic_options({contents ={
|
local t = create_UIBox_generic_options({contents ={
|
||||||
{n=G.UIT.R, config={align = "cm", padding = 0.05}, nodes=rows},
|
{n=G.UIT.R, config={align = "cm", padding = 0.05}, nodes=rows},
|
||||||
{n=G.UIT.R, config={align = "cm", padding = 0.05}, nodes={
|
G.F_EXTERNAL_LINKS and {n=G.UIT.R, config={align = "cm", padding = 0.05}, nodes={
|
||||||
{n=G.UIT.C, config={align = "cm", padding = 0.1, minw = 4, maxw = 4, r = 0.1, minh = 0.8, hover = true, colour = mix_colours(G.C.GREEN, G.C.GREY, 0.4), button = 'loc_survey', shadow = true}, nodes={
|
{n=G.UIT.C, config={align = "cm", padding = 0.1, minw = 4, maxw = 4, r = 0.1, minh = 0.8, hover = true, colour = mix_colours(G.C.GREEN, G.C.GREY, 0.4), button = 'loc_survey', shadow = true}, nodes={
|
||||||
{n=G.UIT.O, config={object = discord}},
|
{n=G.UIT.O, config={object = discord}},
|
||||||
{n=G.UIT.T, config={text = G.LANG.button, scale = 0.45, colour = G.C.UI.TEXT_LIGHT, shadow = true}}
|
{n=G.UIT.T, config={text = G.LANG.button, scale = 0.45, colour = G.C.UI.TEXT_LIGHT, shadow = true}}
|
||||||
}},
|
}},
|
||||||
}}
|
}} or nil
|
||||||
}})
|
}})
|
||||||
return t
|
return t
|
||||||
end
|
end
|
||||||
|
@ -1169,7 +1169,7 @@ G.FUNCS.apply_window_changes = function(_initial)
|
|||||||
vsync = G.SETTINGS.WINDOW.vsync,
|
vsync = G.SETTINGS.WINDOW.vsync,
|
||||||
resizable = true,
|
resizable = true,
|
||||||
display = G.SETTINGS.WINDOW.selected_display,
|
display = G.SETTINGS.WINDOW.selected_display,
|
||||||
highdpi = true
|
highdpi = (love.system.getOS() == 'OS X')
|
||||||
})
|
})
|
||||||
G.SETTINGS.QUEUED_CHANGE = {}
|
G.SETTINGS.QUEUED_CHANGE = {}
|
||||||
if _initial ~= true then
|
if _initial ~= true then
|
||||||
@ -1215,7 +1215,7 @@ G.FUNCS.RUN_SETUP_check_back = function(e)
|
|||||||
end
|
end
|
||||||
|
|
||||||
G.FUNCS.RUN_SETUP_check_back_name = function(e)
|
G.FUNCS.RUN_SETUP_check_back_name = function(e)
|
||||||
if G.GAME.viewed_back.name ~= e.config.id then
|
if e.config.object and G.GAME.viewed_back.name ~= e.config.id then
|
||||||
--removes the UI from the previously selected back and adds the new one
|
--removes the UI from the previously selected back and adds the new one
|
||||||
|
|
||||||
e.config.object:remove()
|
e.config.object:remove()
|
||||||
@ -2085,8 +2085,8 @@ end
|
|||||||
end
|
end
|
||||||
|
|
||||||
G.FUNCS.can_skip_booster = function(e)
|
G.FUNCS.can_skip_booster = function(e)
|
||||||
if G.pack_cards and G.pack_cards.cards[1] and
|
if G.pack_cards and (G.pack_cards.cards[1]) and
|
||||||
(G.STATE == G.STATES.PLANET_PACK or G.STATE == G.STATES.STANDARD_PACK or G.STATE == G.STATES.BUFFOON_PACK or (G.hand and G.hand.cards[1])) then
|
(G.STATE == G.STATES.PLANET_PACK or G.STATE == G.STATES.STANDARD_PACK or G.STATE == G.STATES.BUFFOON_PACK or (G.hand and (G.hand.cards[1] or (G.hand.config.card_limit <= 0)))) then
|
||||||
e.config.colour = G.C.GREY
|
e.config.colour = G.C.GREY
|
||||||
e.config.button = 'skip_booster'
|
e.config.button = 'skip_booster'
|
||||||
else
|
else
|
||||||
@ -2458,11 +2458,6 @@ end
|
|||||||
G.SHOP_SIGN = nil
|
G.SHOP_SIGN = nil
|
||||||
G.STATE_COMPLETE = false
|
G.STATE_COMPLETE = false
|
||||||
G.STATE = G.STATES.BLIND_SELECT
|
G.STATE = G.STATES.BLIND_SELECT
|
||||||
if G.GAME.round_resets.blind_states.Boss == 'Defeated' then
|
|
||||||
G.GAME.round_resets.blind_ante = G.GAME.round_resets.ante
|
|
||||||
G.GAME.round_resets.blind_tags.Small = get_next_tag_key()
|
|
||||||
G.GAME.round_resets.blind_tags.Big = get_next_tag_key()
|
|
||||||
end
|
|
||||||
G.CONTROLLER.locks.toggle_shop = nil
|
G.CONTROLLER.locks.toggle_shop = nil
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
@ -2906,6 +2901,12 @@ G.FUNCS.cash_out = function(e)
|
|||||||
G.VIBRATION = G.VIBRATION + 1
|
G.VIBRATION = G.VIBRATION + 1
|
||||||
end
|
end
|
||||||
ease_chips(0)
|
ease_chips(0)
|
||||||
|
if G.GAME.round_resets.blind_states.Boss == 'Defeated' then
|
||||||
|
G.GAME.round_resets.blind_ante = G.GAME.round_resets.ante
|
||||||
|
G.GAME.round_resets.blind_tags.Small = get_next_tag_key()
|
||||||
|
G.GAME.round_resets.blind_tags.Big = get_next_tag_key()
|
||||||
|
end
|
||||||
|
reset_blinds()
|
||||||
delay(0.6)
|
delay(0.6)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -843,8 +843,8 @@ function card_eval_status_text(card, eval_type, amt, percent, dir, extra)
|
|||||||
elseif eval_type == 'dollars' then
|
elseif eval_type == 'dollars' then
|
||||||
sound = 'coin3'
|
sound = 'coin3'
|
||||||
amt = amt
|
amt = amt
|
||||||
text = localize("$")..tostring(amt)
|
text = (amt <-0.01 and '-' or '')..localize("$")..tostring(math.abs(amt))
|
||||||
colour = G.C.MONEY
|
colour = amt <-0.01 and G.C.RED or G.C.MONEY
|
||||||
elseif eval_type == 'swap' then
|
elseif eval_type == 'swap' then
|
||||||
sound = 'generic1'
|
sound = 'generic1'
|
||||||
amt = amt
|
amt = amt
|
||||||
@ -877,7 +877,7 @@ function card_eval_status_text(card, eval_type, amt, percent, dir, extra)
|
|||||||
end
|
end
|
||||||
delay = delay*1.25
|
delay = delay*1.25
|
||||||
|
|
||||||
if amt > 0 then
|
if amt > 0 or amt < 0 then
|
||||||
if extra and extra.instant then
|
if extra and extra.instant then
|
||||||
if extrafunc then extrafunc() end
|
if extrafunc then extrafunc() end
|
||||||
attention_text({
|
attention_text({
|
||||||
@ -1127,16 +1127,16 @@ end
|
|||||||
function update_canvas_juice(dt)
|
function update_canvas_juice(dt)
|
||||||
G.JIGGLE_VIBRATION = G.ROOM.jiggle or 0
|
G.JIGGLE_VIBRATION = G.ROOM.jiggle or 0
|
||||||
if not G.SETTINGS.screenshake or (type(G.SETTINGS.screenshake) ~= 'number') then
|
if not G.SETTINGS.screenshake or (type(G.SETTINGS.screenshake) ~= 'number') then
|
||||||
G.SETTINGS.screenshake = 50
|
G.SETTINGS.screenshake = G.SETTINGS.reduced_motion and 0 or 50
|
||||||
end
|
end
|
||||||
local shake_amt = math.max(0,G.SETTINGS.screenshake-30)/100
|
local shake_amt = (G.SETTINGS.reduced_motion and 0 or 1)*math.max(0,G.SETTINGS.screenshake-30)/100
|
||||||
G.ARGS.eased_cursor_pos = G.ARGS.eased_cursor_pos or {x=G.CURSOR.T.x,y=G.CURSOR.T.y, sx = G.CONTROLLER.cursor_position.x, sy = G.CONTROLLER.cursor_position.y}
|
G.ARGS.eased_cursor_pos = G.ARGS.eased_cursor_pos or {x=G.CURSOR.T.x,y=G.CURSOR.T.y, sx = G.CONTROLLER.cursor_position.x, sy = G.CONTROLLER.cursor_position.y}
|
||||||
G.ARGS.eased_cursor_pos.x = G.ARGS.eased_cursor_pos.x*(1-3*dt) + 3*dt*(shake_amt*G.CURSOR.T.x + (1-shake_amt)*G.ROOM.T.w/2)
|
G.ARGS.eased_cursor_pos.x = G.ARGS.eased_cursor_pos.x*(1-3*dt) + 3*dt*(shake_amt*G.CURSOR.T.x + (1-shake_amt)*G.ROOM.T.w/2)
|
||||||
G.ARGS.eased_cursor_pos.y = G.ARGS.eased_cursor_pos.y*(1-3*dt) + 3*dt*(shake_amt*G.CURSOR.T.y + (1-shake_amt)*G.ROOM.T.h/2)
|
G.ARGS.eased_cursor_pos.y = G.ARGS.eased_cursor_pos.y*(1-3*dt) + 3*dt*(shake_amt*G.CURSOR.T.y + (1-shake_amt)*G.ROOM.T.h/2)
|
||||||
G.ARGS.eased_cursor_pos.sx = G.ARGS.eased_cursor_pos.sx*(1-3*dt) + 3*dt*(shake_amt*G.CONTROLLER.cursor_position.x + (1-shake_amt)*G.WINDOWTRANS.real_window_w/2)
|
G.ARGS.eased_cursor_pos.sx = G.ARGS.eased_cursor_pos.sx*(1-3*dt) + 3*dt*(shake_amt*G.CONTROLLER.cursor_position.x + (1-shake_amt)*G.WINDOWTRANS.real_window_w/2)
|
||||||
G.ARGS.eased_cursor_pos.sy = G.ARGS.eased_cursor_pos.sy*(1-3*dt) + 3*dt*(shake_amt*G.CONTROLLER.cursor_position.y + (1-shake_amt)*G.WINDOWTRANS.real_window_h/2)
|
G.ARGS.eased_cursor_pos.sy = G.ARGS.eased_cursor_pos.sy*(1-3*dt) + 3*dt*(shake_amt*G.CONTROLLER.cursor_position.y + (1-shake_amt)*G.WINDOWTRANS.real_window_h/2)
|
||||||
|
|
||||||
shake_amt = G.SETTINGS.screenshake/100*3
|
shake_amt = (G.SETTINGS.reduced_motion and 0 or 1)*G.SETTINGS.screenshake/100*3
|
||||||
if shake_amt < 0.05 then shake_amt = 0 end
|
if shake_amt < 0.05 then shake_amt = 0 end
|
||||||
|
|
||||||
G.ROOM.jiggle = (G.ROOM.jiggle or 0)*(1-5*dt)*(shake_amt > 0.05 and 1 or 0)
|
G.ROOM.jiggle = (G.ROOM.jiggle or 0)*(1-5*dt)*(shake_amt > 0.05 and 1 or 0)
|
||||||
@ -1942,6 +1942,10 @@ function create_playing_card(card_init, area, skip_materialize, silent, colours)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function get_pack(_key, _type)
|
function get_pack(_key, _type)
|
||||||
|
if not G.GAME.first_shop_buffoon and not G.GAME.banned_keys['p_buffoon_normal_1'] then
|
||||||
|
G.GAME.first_shop_buffoon = true
|
||||||
|
return G.P_CENTERS['p_buffoon_normal_'..(math.random(1, 2))]
|
||||||
|
end
|
||||||
local cume, it, center = 0, 0, nil
|
local cume, it, center = 0, 0, nil
|
||||||
for k, v in ipairs(G.P_CENTER_POOLS['Booster']) do
|
for k, v in ipairs(G.P_CENTER_POOLS['Booster']) do
|
||||||
if (not _type or _type == v.kind) and not G.GAME.banned_keys[v.key] then cume = cume + (v.weight or 1 ) end
|
if (not _type or _type == v.kind) and not G.GAME.banned_keys[v.key] then cume = cume + (v.weight or 1 ) end
|
||||||
@ -1964,7 +1968,7 @@ function get_current_pool(_type, _rarity, _legendary, _append)
|
|||||||
if _type == 'Joker' then
|
if _type == 'Joker' then
|
||||||
local rarity = _rarity or pseudorandom('rarity'..G.GAME.round_resets.ante..(_append or ''))
|
local rarity = _rarity or pseudorandom('rarity'..G.GAME.round_resets.ante..(_append or ''))
|
||||||
rarity = (_legendary and 4) or (rarity > 0.95 and 3) or (rarity > 0.7 and 2) or 1
|
rarity = (_legendary and 4) or (rarity > 0.95 and 3) or (rarity > 0.7 and 2) or 1
|
||||||
_starting_pool, _pool_key = G.P_JOKER_RARITY_POOLS[rarity], 'Joker'..rarity..(_append or '')
|
_starting_pool, _pool_key = G.P_JOKER_RARITY_POOLS[rarity], 'Joker'..rarity..((not _legendary and _append) or '')
|
||||||
else _starting_pool, _pool_key = G.P_CENTER_POOLS[_type], _type..(_append or '')
|
else _starting_pool, _pool_key = G.P_CENTER_POOLS[_type], _type..(_append or '')
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2034,7 +2038,7 @@ function get_current_pool(_type, _rarity, _legendary, _append)
|
|||||||
--if pool is empty
|
--if pool is empty
|
||||||
if _pool_size == 0 then
|
if _pool_size == 0 then
|
||||||
_pool = EMPTY(G.ARGS.TEMP_POOL)
|
_pool = EMPTY(G.ARGS.TEMP_POOL)
|
||||||
if _type == 'Tarot' or _type == 'Tarot_Planet' then _pool[#_pool + 1] = "c_fool"
|
if _type == 'Tarot' or _type == 'Tarot_Planet' then _pool[#_pool + 1] = "c_strength"
|
||||||
elseif _type == 'Planet' then _pool[#_pool + 1] = "c_pluto"
|
elseif _type == 'Planet' then _pool[#_pool + 1] = "c_pluto"
|
||||||
elseif _type == 'Spectral' then _pool[#_pool + 1] = "c_incantation"
|
elseif _type == 'Spectral' then _pool[#_pool + 1] = "c_incantation"
|
||||||
elseif _type == 'Joker' then _pool[#_pool + 1] = "j_joker"
|
elseif _type == 'Joker' then _pool[#_pool + 1] = "j_joker"
|
||||||
@ -2045,7 +2049,7 @@ function get_current_pool(_type, _rarity, _legendary, _append)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return _pool, _pool_key..G.GAME.round_resets.ante
|
return _pool, _pool_key..(not _legendary and G.GAME.round_resets.ante or '')
|
||||||
end
|
end
|
||||||
|
|
||||||
function poll_edition(_key, _mod, _no_neg, _guaranteed)
|
function poll_edition(_key, _mod, _no_neg, _guaranteed)
|
||||||
@ -2130,9 +2134,15 @@ function create_card(_type, area, legendary, _rarity, skip_materialize, soulable
|
|||||||
if G.GAME.modifiers.all_eternal then
|
if G.GAME.modifiers.all_eternal then
|
||||||
card:set_eternal(true)
|
card:set_eternal(true)
|
||||||
end
|
end
|
||||||
if area == G.shop_jokers then
|
if (area == G.shop_jokers) or (area == G.pack_cards) then
|
||||||
if G.GAME.modifiers.enable_eternals_in_shop and pseudorandom('stake_shop_joker_eternal'..G.GAME.round_resets.ante) > 0.7 then
|
local eternal_perishable_poll = pseudorandom((area == G.pack_cards and 'packetper' or 'etperpoll')..G.GAME.round_resets.ante)
|
||||||
|
if G.GAME.modifiers.enable_eternals_in_shop and eternal_perishable_poll > 0.7 then
|
||||||
card:set_eternal(true)
|
card:set_eternal(true)
|
||||||
|
elseif G.GAME.modifiers.enable_perishables_in_shop and ((eternal_perishable_poll > 0.4) and (eternal_perishable_poll <= 0.7)) then
|
||||||
|
card:set_perishable(true)
|
||||||
|
end
|
||||||
|
if G.GAME.modifiers.enable_rentals_in_shop and pseudorandom((area == G.pack_cards and 'packssjr' or 'ssjr')..G.GAME.round_resets.ante) > 0.7 then
|
||||||
|
card:set_rental(true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2291,7 +2301,11 @@ function reset_mail_rank()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function reset_ancient_card()
|
function reset_ancient_card()
|
||||||
local ancient_card = pseudorandom_element({'Spades','Hearts','Clubs','Diamonds'}, pseudoseed('anc'..G.GAME.round_resets.ante))
|
local ancient_suits = {}
|
||||||
|
for k, v in ipairs({'Spades','Hearts','Clubs','Diamonds'}) do
|
||||||
|
if v ~= G.GAME.current_round.ancient_card.suit then ancient_suits[#ancient_suits + 1] = v end
|
||||||
|
end
|
||||||
|
local ancient_card = pseudorandom_element(ancient_suits, pseudoseed('anc'..G.GAME.round_resets.ante))
|
||||||
G.GAME.current_round.ancient_card.suit = ancient_card
|
G.GAME.current_round.ancient_card.suit = ancient_card
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2309,6 +2323,18 @@ function reset_castle_card()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function reset_blinds()
|
||||||
|
G.GAME.round_resets.blind_states = G.GAME.round_resets.blind_states or {Small = 'Select', Big = 'Upcoming', Boss = 'Upcoming'}
|
||||||
|
if G.GAME.round_resets.blind_states.Boss == 'Defeated' then
|
||||||
|
G.GAME.round_resets.blind_states.Small = 'Upcoming'
|
||||||
|
G.GAME.round_resets.blind_states.Big = 'Upcoming'
|
||||||
|
G.GAME.round_resets.blind_states.Boss = 'Upcoming'
|
||||||
|
G.GAME.blind_on_deck = 'Small'
|
||||||
|
G.GAME.round_resets.blind_choices.Boss = get_new_boss()
|
||||||
|
G.GAME.round_resets.boss_rerolled = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function get_new_boss()
|
function get_new_boss()
|
||||||
G.GAME.perscribed_bosses = G.GAME.perscribed_bosses or {
|
G.GAME.perscribed_bosses = G.GAME.perscribed_bosses or {
|
||||||
}
|
}
|
||||||
@ -2330,6 +2356,9 @@ function get_new_boss()
|
|||||||
eligible_bosses[k] = true
|
eligible_bosses[k] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
for k, v in pairs(G.GAME.banned_keys) do
|
||||||
|
if eligible_bosses[k] then eligible_bosses[k] = nil end
|
||||||
|
end
|
||||||
|
|
||||||
local min_use = 100
|
local min_use = 100
|
||||||
for k, v in pairs(G.GAME.bosses_used) do
|
for k, v in pairs(G.GAME.bosses_used) do
|
||||||
@ -2415,7 +2444,7 @@ function generate_card_ui(_c, full_UI_table, specific_vars, card_type, badges, h
|
|||||||
end
|
end
|
||||||
|
|
||||||
if _c.set == 'Other' then
|
if _c.set == 'Other' then
|
||||||
localize{type = 'other', key = _c.key, nodes = desc_nodes, vars = specific_vars}
|
localize{type = 'other', key = _c.key, nodes = desc_nodes, vars = specific_vars or _c.vars}
|
||||||
elseif card_type == 'Locked' then
|
elseif card_type == 'Locked' then
|
||||||
if _c.wip then localize{type = 'other', key = 'wip_locked', set = 'Other', nodes = desc_nodes, vars = loc_vars}
|
if _c.wip then localize{type = 'other', key = 'wip_locked', set = 'Other', nodes = desc_nodes, vars = loc_vars}
|
||||||
elseif _c.demo and specific_vars then localize{type = 'other', key = 'demo_shop_locked', nodes = desc_nodes, vars = loc_vars}
|
elseif _c.demo and specific_vars then localize{type = 'other', key = 'demo_shop_locked', nodes = desc_nodes, vars = loc_vars}
|
||||||
@ -2702,6 +2731,8 @@ function generate_card_ui(_c, full_UI_table, specific_vars, card_type, badges, h
|
|||||||
if v == 'red_seal' then info_queue[#info_queue+1] = {key = 'red_seal', set = 'Other'} end
|
if v == 'red_seal' then info_queue[#info_queue+1] = {key = 'red_seal', set = 'Other'} end
|
||||||
if v == 'purple_seal' then info_queue[#info_queue+1] = {key = 'purple_seal', set = 'Other'} end
|
if v == 'purple_seal' then info_queue[#info_queue+1] = {key = 'purple_seal', set = 'Other'} end
|
||||||
if v == 'eternal' then info_queue[#info_queue+1] = {key = 'eternal', set = 'Other'} end
|
if v == 'eternal' then info_queue[#info_queue+1] = {key = 'eternal', set = 'Other'} end
|
||||||
|
if v == 'perishable' then info_queue[#info_queue+1] = {key = 'perishable', set = 'Other', vars = {G.GAME.perishable_rounds or 1, specific_vars.perish_tally or G.GAME.perishable_rounds}} end
|
||||||
|
if v == 'rental' then info_queue[#info_queue+1] = {key = 'rental', set = 'Other', vars = {G.GAME.rental_rate or 1}} end
|
||||||
if v == 'pinned_left' then info_queue[#info_queue+1] = {key = 'pinned_left', set = 'Other'} end
|
if v == 'pinned_left' then info_queue[#info_queue+1] = {key = 'pinned_left', set = 'Other'} end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -61,6 +61,7 @@ function GET_DISPLAYINFO(screenmode, display)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function timer_checkpoint(label, type, reset)
|
function timer_checkpoint(label, type, reset)
|
||||||
|
G.PREV_GARB = G.PREV_GARB or 0
|
||||||
if not G.F_ENABLE_PERF_OVERLAY then return end
|
if not G.F_ENABLE_PERF_OVERLAY then return end
|
||||||
G.check = G.check or {
|
G.check = G.check or {
|
||||||
draw = {
|
draw = {
|
||||||
@ -83,7 +84,7 @@ function timer_checkpoint(label, type, reset)
|
|||||||
|
|
||||||
cp.checkpoint_list[cp.checkpoints+1] = cp.checkpoint_list[cp.checkpoints+1] or {}
|
cp.checkpoint_list[cp.checkpoints+1] = cp.checkpoint_list[cp.checkpoints+1] or {}
|
||||||
cp.checkpoints = cp.checkpoints+1
|
cp.checkpoints = cp.checkpoints+1
|
||||||
cp.checkpoint_list[cp.checkpoints].label = label
|
cp.checkpoint_list[cp.checkpoints].label = label..': '..(collectgarbage( "count" ) - G.PREV_GARB)
|
||||||
cp.checkpoint_list[cp.checkpoints].time = love.timer.getTime()
|
cp.checkpoint_list[cp.checkpoints].time = love.timer.getTime()
|
||||||
cp.checkpoint_list[cp.checkpoints].TTC = cp.checkpoint_list[cp.checkpoints].time - cp.last_time
|
cp.checkpoint_list[cp.checkpoints].TTC = cp.checkpoint_list[cp.checkpoints].time - cp.last_time
|
||||||
cp.checkpoint_list[cp.checkpoints].trend = cp.checkpoint_list[cp.checkpoints].trend or {}
|
cp.checkpoint_list[cp.checkpoints].trend = cp.checkpoint_list[cp.checkpoints].trend or {}
|
||||||
@ -93,7 +94,7 @@ function timer_checkpoint(label, type, reset)
|
|||||||
cp.checkpoint_list[cp.checkpoints].trend[401] = nil
|
cp.checkpoint_list[cp.checkpoints].trend[401] = nil
|
||||||
cp.checkpoint_list[cp.checkpoints].states[401] = nil
|
cp.checkpoint_list[cp.checkpoints].states[401] = nil
|
||||||
cp.last_time = cp.checkpoint_list[cp.checkpoints].time
|
cp.last_time = cp.checkpoint_list[cp.checkpoints].time
|
||||||
|
G.PREV_GARB = collectgarbage( "count" )
|
||||||
local av = 0
|
local av = 0
|
||||||
for k, v in ipairs(cp.checkpoint_list[cp.checkpoints].trend) do
|
for k, v in ipairs(cp.checkpoint_list[cp.checkpoints].trend) do
|
||||||
av = av + v/#cp.checkpoint_list[cp.checkpoints].trend
|
av = av + v/#cp.checkpoint_list[cp.checkpoints].trend
|
||||||
@ -215,6 +216,40 @@ function pseudoshuffle(list, seed)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function generate_starting_seed()
|
||||||
|
if G.GAME.stake >= 8 then
|
||||||
|
local r_leg, r_tally = {}, 0
|
||||||
|
local g_leg, g_tally = {}, 0
|
||||||
|
for k, v in pairs(G.P_JOKER_RARITY_POOLS[4]) do
|
||||||
|
local win_ante = get_joker_win_sticker(v, true)
|
||||||
|
if win_ante and (win_ante >= 8) then
|
||||||
|
g_leg[v.key] = true
|
||||||
|
g_tally = g_tally + 1
|
||||||
|
else
|
||||||
|
r_leg[v.key] = true
|
||||||
|
r_tally = r_tally + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if r_tally > 0 and g_tally > 0 then
|
||||||
|
local seed_found = nil
|
||||||
|
local extra_num = 0
|
||||||
|
while not seed_found do
|
||||||
|
extra_num = extra_num + 0.561892350821
|
||||||
|
seed_found = random_string(8, extra_num + G.CONTROLLER.cursor_hover.T.x*0.33411983 + G.CONTROLLER.cursor_hover.T.y*0.874146 + 0.412311010*G.CONTROLLER.cursor_hover.time)
|
||||||
|
if not r_leg[get_first_legendary(seed_found)] then seed_found = nil end
|
||||||
|
end
|
||||||
|
return seed_found
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return random_string(8, G.CONTROLLER.cursor_hover.T.x*0.33411983 + G.CONTROLLER.cursor_hover.T.y*0.874146 + 0.412311010*G.CONTROLLER.cursor_hover.time)
|
||||||
|
end
|
||||||
|
|
||||||
|
function get_first_legendary(_key)
|
||||||
|
local _t, key = pseudorandom_element(G.P_JOKER_RARITY_POOLS[4], pseudoseed('Joker4', _key))
|
||||||
|
return _t.key
|
||||||
|
end
|
||||||
|
|
||||||
function pseudorandom_element(_t, seed)
|
function pseudorandom_element(_t, seed)
|
||||||
if seed then math.randomseed(seed) end
|
if seed then math.randomseed(seed) end
|
||||||
local keys = {}
|
local keys = {}
|
||||||
@ -260,9 +295,15 @@ function pseudohash(str)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function pseudoseed(key)
|
function pseudoseed(key, predict_seed)
|
||||||
if key == 'seed' then return math.random() end
|
if key == 'seed' then return math.random() end
|
||||||
|
|
||||||
|
if predict_seed then
|
||||||
|
local _pseed = pseudohash(key..(predict_seed or ''))
|
||||||
|
_pseed = math.abs(tonumber(string.format("%.13f", (2.134453429141+_pseed*1.72431234)%1)))
|
||||||
|
return (_pseed + (pseudohash(predict_seed) or 0))/2
|
||||||
|
end
|
||||||
|
|
||||||
if not G.GAME.pseudorandom[key] then
|
if not G.GAME.pseudorandom[key] then
|
||||||
G.GAME.pseudorandom[key] = pseudohash(key..(G.GAME.pseudorandom.seed or ''))
|
G.GAME.pseudorandom[key] = pseudohash(key..(G.GAME.pseudorandom.seed or ''))
|
||||||
end
|
end
|
||||||
@ -350,15 +391,25 @@ function evaluate_poker_hand(hand)
|
|||||||
top = nil
|
top = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if next(get_X_same(5,hand)) and next(get_flush(hand)) then
|
local parts = {
|
||||||
results["Flush Five"] = get_X_same(5,hand)
|
_5 = get_X_same(5,hand),
|
||||||
|
_4 = get_X_same(4,hand),
|
||||||
|
_3 = get_X_same(3,hand),
|
||||||
|
_2 = get_X_same(2,hand),
|
||||||
|
_flush = get_flush(hand),
|
||||||
|
_straight = get_straight(hand),
|
||||||
|
_highest = get_highest(hand)
|
||||||
|
}
|
||||||
|
|
||||||
|
if next(parts._5) and next(parts._flush) then
|
||||||
|
results["Flush Five"] = parts._5
|
||||||
if not results.top then results.top = results["Flush Five"] end
|
if not results.top then results.top = results["Flush Five"] end
|
||||||
end
|
end
|
||||||
|
|
||||||
if next(get_X_same(3,hand)) and next(get_X_same(2,hand)) and next(get_flush(hand)) then
|
if next(parts._3) and next(parts._2) and next(parts._flush) then
|
||||||
local fh_hand = {}
|
local fh_hand = {}
|
||||||
local fh_3 = get_X_same(3,hand)[1]
|
local fh_3 = parts._3[1]
|
||||||
local fh_2 = get_X_same(2,hand)[1]
|
local fh_2 = parts._2[1]
|
||||||
for i=1, #fh_3 do
|
for i=1, #fh_3 do
|
||||||
fh_hand[#fh_hand+1] = fh_3[i]
|
fh_hand[#fh_hand+1] = fh_3[i]
|
||||||
end
|
end
|
||||||
@ -369,13 +420,13 @@ function evaluate_poker_hand(hand)
|
|||||||
if not results.top then results.top = results["Flush House"] end
|
if not results.top then results.top = results["Flush House"] end
|
||||||
end
|
end
|
||||||
|
|
||||||
if next(get_X_same(5,hand)) then
|
if next(parts._5) then
|
||||||
results["Five of a Kind"] = get_X_same(5,hand)
|
results["Five of a Kind"] = parts._5
|
||||||
if not results.top then results.top = results["Five of a Kind"] end
|
if not results.top then results.top = results["Five of a Kind"] end
|
||||||
end
|
end
|
||||||
|
|
||||||
if next(get_flush(hand)) and next(get_straight(hand)) then
|
if next(parts._flush) and next(parts._straight) then
|
||||||
local _s, _f, ret = get_straight(hand), get_flush(hand), {}
|
local _s, _f, ret = parts._straight, parts._flush, {}
|
||||||
for _, v in ipairs(_f[1]) do
|
for _, v in ipairs(_f[1]) do
|
||||||
ret[#ret+1] = v
|
ret[#ret+1] = v
|
||||||
end
|
end
|
||||||
@ -391,15 +442,15 @@ function evaluate_poker_hand(hand)
|
|||||||
if not results.top then results.top = results["Straight Flush"] end
|
if not results.top then results.top = results["Straight Flush"] end
|
||||||
end
|
end
|
||||||
|
|
||||||
if next(get_X_same(4,hand)) then
|
if next(parts._4) then
|
||||||
results["Four of a Kind"] = get_X_same(4,hand)
|
results["Four of a Kind"] = parts._4
|
||||||
if not results.top then results.top = results["Four of a Kind"] end
|
if not results.top then results.top = results["Four of a Kind"] end
|
||||||
end
|
end
|
||||||
|
|
||||||
if next(get_X_same(3,hand)) and next(get_X_same(2,hand)) then
|
if next(parts._3) and next(parts._2) then
|
||||||
local fh_hand = {}
|
local fh_hand = {}
|
||||||
local fh_3 = get_X_same(3,hand)[1]
|
local fh_3 = parts._3[1]
|
||||||
local fh_2 = get_X_same(2,hand)[1]
|
local fh_2 = parts._2[1]
|
||||||
for i=1, #fh_3 do
|
for i=1, #fh_3 do
|
||||||
fh_hand[#fh_hand+1] = fh_3[i]
|
fh_hand[#fh_hand+1] = fh_3[i]
|
||||||
end
|
end
|
||||||
@ -410,26 +461,29 @@ function evaluate_poker_hand(hand)
|
|||||||
if not results.top then results.top = results["Full House"] end
|
if not results.top then results.top = results["Full House"] end
|
||||||
end
|
end
|
||||||
|
|
||||||
if next(get_flush(hand)) then
|
if next(parts._flush) then
|
||||||
results["Flush"] = get_flush(hand)
|
results["Flush"] = parts._flush
|
||||||
if not results.top then results.top = results["Flush"] end
|
if not results.top then results.top = results["Flush"] end
|
||||||
end
|
end
|
||||||
|
|
||||||
if next(get_straight(hand)) then
|
if next(parts._straight) then
|
||||||
results["Straight"] = get_straight(hand)
|
results["Straight"] = parts._straight
|
||||||
if not results.top then results.top = results["Straight"] end
|
if not results.top then results.top = results["Straight"] end
|
||||||
end
|
end
|
||||||
|
|
||||||
if next(get_X_same(3,hand)) then
|
if next(parts._3) then
|
||||||
results["Three of a Kind"] = get_X_same(3,hand)
|
results["Three of a Kind"] = parts._3
|
||||||
if not results.top then results.top = results["Three of a Kind"] end
|
if not results.top then results.top = results["Three of a Kind"] end
|
||||||
end
|
end
|
||||||
|
|
||||||
if #get_X_same(2,hand) == 2 then
|
if (#parts._2 == 2) or (#parts._3 == 1 and #parts._2 == 1) then
|
||||||
local fh_hand = {}
|
local fh_hand = {}
|
||||||
local r = get_X_same(2,hand)
|
local r = parts._2
|
||||||
local fh_2a = r[1]
|
local fh_2a = r[1]
|
||||||
local fh_2b = r[2]
|
local fh_2b = r[2]
|
||||||
|
if not fh_2b then
|
||||||
|
fh_2b = parts._3[1]
|
||||||
|
end
|
||||||
for i=1, #fh_2a do
|
for i=1, #fh_2a do
|
||||||
fh_hand[#fh_hand+1] = fh_2a[i]
|
fh_hand[#fh_hand+1] = fh_2a[i]
|
||||||
end
|
end
|
||||||
@ -440,13 +494,13 @@ function evaluate_poker_hand(hand)
|
|||||||
if not results.top then results.top = results["Two Pair"] end
|
if not results.top then results.top = results["Two Pair"] end
|
||||||
end
|
end
|
||||||
|
|
||||||
if next(get_X_same(2,hand)) then
|
if next(parts._2) then
|
||||||
results["Pair"] = get_X_same(2,hand)
|
results["Pair"] = parts._2
|
||||||
if not results.top then results.top = results["Pair"] end
|
if not results.top then results.top = results["Pair"] end
|
||||||
end
|
end
|
||||||
|
|
||||||
if next(get_highest(hand)) then
|
if next(parts._highest) then
|
||||||
results["High Card"] = get_highest(hand)
|
results["High Card"] = parts._highest
|
||||||
if not results.top then results.top = results["High Card"] end
|
if not results.top then results.top = results["High Card"] end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -570,6 +624,47 @@ function reset_drawhash()
|
|||||||
G.DRAW_HASH = EMPTY(G.DRAW_HASH)
|
G.DRAW_HASH = EMPTY(G.DRAW_HASH)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--Copyright 2021 Max Cahill (Zlib license)
|
||||||
|
--
|
||||||
|
--This software is provided 'as-is', without any express or implied
|
||||||
|
--warranty. In no event will the authors be held liable for any damages
|
||||||
|
--arising from the use of this software.
|
||||||
|
--
|
||||||
|
--Permission is granted to anyone to use this software for any purpose,
|
||||||
|
--including commercial applications, and to alter it and redistribute it
|
||||||
|
--freely, subject to the following restrictions:
|
||||||
|
--
|
||||||
|
--1. The origin of this software must not be misrepresented; you must not
|
||||||
|
-- claim that you wrote the original software. If you use this software
|
||||||
|
-- in a product, an acknowledgment in the product documentation would be
|
||||||
|
-- appreciated but is not required.
|
||||||
|
--2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
-- misrepresented as being the original software.
|
||||||
|
--3. This notice may not be removed or altered from any source distribution.
|
||||||
|
--This function was slightly modified from it's original state
|
||||||
|
function nuGC(time_budget, memory_ceiling, disable_otherwise)
|
||||||
|
time_budget = time_budget or 3e-4
|
||||||
|
memory_ceiling = memory_ceiling or 300
|
||||||
|
local max_steps = 1000
|
||||||
|
local steps = 0
|
||||||
|
local start_time = love.timer.getTime()
|
||||||
|
while
|
||||||
|
love.timer.getTime() - start_time < time_budget and
|
||||||
|
steps < max_steps
|
||||||
|
do
|
||||||
|
collectgarbage("step", 1)
|
||||||
|
steps = steps + 1
|
||||||
|
end
|
||||||
|
--safety net
|
||||||
|
if collectgarbage("count") / 1024 > memory_ceiling then
|
||||||
|
collectgarbage("collect")
|
||||||
|
end
|
||||||
|
--don't collect gc outside this margin
|
||||||
|
if disable_otherwise then
|
||||||
|
collectgarbage("stop")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
--The drawhash is a hash table of all drawn nodes and all nodes that may be invisible but still collide with the cursor
|
--The drawhash is a hash table of all drawn nodes and all nodes that may be invisible but still collide with the cursor
|
||||||
function add_to_drawhash(obj)
|
function add_to_drawhash(obj)
|
||||||
if obj then
|
if obj then
|
||||||
@ -599,7 +694,7 @@ end
|
|||||||
|
|
||||||
function play_sound(sound_code, per, vol)
|
function play_sound(sound_code, per, vol)
|
||||||
if G.F_MUTE then return end
|
if G.F_MUTE then return end
|
||||||
if sound_code and not G.muted and G.SETTINGS.SOUND.volume > 0 then
|
if sound_code and G.SETTINGS.SOUND.volume > 0.001 then
|
||||||
G.ARGS.play_sound = G.ARGS.play_sound or {}
|
G.ARGS.play_sound = G.ARGS.play_sound or {}
|
||||||
G.ARGS.play_sound.type = 'sound'
|
G.ARGS.play_sound.type = 'sound'
|
||||||
G.ARGS.play_sound.time = G.TIMERS.REAL
|
G.ARGS.play_sound.time = G.TIMERS.REAL
|
||||||
@ -825,7 +920,7 @@ function get_blind_amount(ante)
|
|||||||
local k = 0.75
|
local k = 0.75
|
||||||
if not G.GAME.modifiers.scaling or G.GAME.modifiers.scaling == 1 then
|
if not G.GAME.modifiers.scaling or G.GAME.modifiers.scaling == 1 then
|
||||||
local amounts = {
|
local amounts = {
|
||||||
300, 800, 2800, 6000, 11000, 20000, 35000, 50000
|
300, 800, 2000, 5000, 11000, 20000, 35000, 50000
|
||||||
}
|
}
|
||||||
if ante < 1 then return 100 end
|
if ante < 1 then return 100 end
|
||||||
if ante <= 8 then return amounts[ante] end
|
if ante <= 8 then return amounts[ante] end
|
||||||
@ -835,7 +930,8 @@ function get_blind_amount(ante)
|
|||||||
return amount
|
return amount
|
||||||
elseif G.GAME.modifiers.scaling == 2 then
|
elseif G.GAME.modifiers.scaling == 2 then
|
||||||
local amounts = {
|
local amounts = {
|
||||||
300, 1000, 3200, 9000, 18000, 32000, 56000, 90000
|
300, 900, 2600, 8000, 20000, 36000, 60000, 100000
|
||||||
|
--300, 900, 2400, 7000, 18000, 32000, 56000, 90000
|
||||||
}
|
}
|
||||||
if ante < 1 then return 100 end
|
if ante < 1 then return 100 end
|
||||||
if ante <= 8 then return amounts[ante] end
|
if ante <= 8 then return amounts[ante] end
|
||||||
@ -845,7 +941,8 @@ function get_blind_amount(ante)
|
|||||||
return amount
|
return amount
|
||||||
elseif G.GAME.modifiers.scaling == 3 then
|
elseif G.GAME.modifiers.scaling == 3 then
|
||||||
local amounts = {
|
local amounts = {
|
||||||
300, 1200, 3600, 10000, 25000, 50000, 90000, 180000
|
300, 1000, 3200, 9000, 25000, 60000, 110000, 200000
|
||||||
|
--300, 1000, 3000, 8000, 22000, 50000, 90000, 180000
|
||||||
}
|
}
|
||||||
if ante < 1 then return 100 end
|
if ante < 1 then return 100 end
|
||||||
if ante <= 8 then return amounts[ante] end
|
if ante <= 8 then return amounts[ante] end
|
||||||
@ -1347,7 +1444,6 @@ function recursive_table_cull(t)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function save_with_action(action)
|
function save_with_action(action)
|
||||||
print('SAVE WITH ACTION')
|
|
||||||
G.action = action
|
G.action = action
|
||||||
save_run()
|
save_run()
|
||||||
G.action = nil
|
G.action = nil
|
||||||
@ -1460,6 +1556,7 @@ function init_localization()
|
|||||||
for _, set in pairs(group) do
|
for _, set in pairs(group) do
|
||||||
for _, center in pairs(set) do
|
for _, center in pairs(set) do
|
||||||
center.text_parsed = {}
|
center.text_parsed = {}
|
||||||
|
if not center.text then else
|
||||||
for _, line in ipairs(center.text) do
|
for _, line in ipairs(center.text) do
|
||||||
center.text_parsed[#center.text_parsed+1] = loc_parse_string(line)
|
center.text_parsed[#center.text_parsed+1] = loc_parse_string(line)
|
||||||
end
|
end
|
||||||
@ -1477,6 +1574,7 @@ function init_localization()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function playing_card_joker_effects(cards)
|
function playing_card_joker_effects(cards)
|
||||||
@ -1661,6 +1759,7 @@ function localize(args, misc_cat)
|
|||||||
assembled_string = assembled_string..(type(subpart) == 'string' and subpart or args.vars[tonumber(subpart[1])] or 'ERROR')
|
assembled_string = assembled_string..(type(subpart) == 'string' and subpart or args.vars[tonumber(subpart[1])] or 'ERROR')
|
||||||
end
|
end
|
||||||
local desc_scale = G.LANG.font.DESCSCALE
|
local desc_scale = G.LANG.font.DESCSCALE
|
||||||
|
if G.F_MOBILE_UI then desc_scale = desc_scale*1.5 end
|
||||||
if args.type == 'name' then
|
if args.type == 'name' then
|
||||||
final_line[#final_line+1] = {n=G.UIT.O, config={
|
final_line[#final_line+1] = {n=G.UIT.O, config={
|
||||||
object = DynaText({string = {assembled_string},
|
object = DynaText({string = {assembled_string},
|
||||||
@ -1673,7 +1772,7 @@ function localize(args, misc_cat)
|
|||||||
shadow = true,
|
shadow = true,
|
||||||
y_offset = -0.6,
|
y_offset = -0.6,
|
||||||
spacing = math.max(0, 0.32*(17 - #assembled_string)),
|
spacing = math.max(0, 0.32*(17 - #assembled_string)),
|
||||||
scale = (0.55 - 0.004*#assembled_string)*(part.control.s and tonumber(part.control.s) or 1)*desc_scale
|
scale = (0.55 - 0.004*#assembled_string)*(part.control.s and tonumber(part.control.s) or 1)
|
||||||
})
|
})
|
||||||
}}
|
}}
|
||||||
elseif part.control.E then
|
elseif part.control.E then
|
||||||
|
@ -101,6 +101,8 @@ function end_round()
|
|||||||
end
|
end
|
||||||
card_eval_status_text(G.jokers.cards[i], 'jokers', nil, nil, nil, eval)
|
card_eval_status_text(G.jokers.cards[i], 'jokers', nil, nil, nil, eval)
|
||||||
end
|
end
|
||||||
|
G.jokers.cards[i]:calculate_rental()
|
||||||
|
G.jokers.cards[i]:calculate_perishable()
|
||||||
end
|
end
|
||||||
if G.GAME.round_resets.ante == G.GAME.win_ante and G.GAME.blind:get_type() == 'Boss' then
|
if G.GAME.round_resets.ante == G.GAME.win_ante and G.GAME.blind:get_type() == 'Boss' then
|
||||||
game_won = true
|
game_won = true
|
||||||
@ -736,6 +738,7 @@ G.FUNCS.evaluate_play = function(e)
|
|||||||
hand_chips = mod_chips(old_mult)
|
hand_chips = mod_chips(old_mult)
|
||||||
extras.hand_chips = true; extras.mult = true
|
extras.hand_chips = true; extras.mult = true
|
||||||
end
|
end
|
||||||
|
if effects[ii].extra.func then effects[ii].extra.func() end
|
||||||
update_hand_text({delay = 0}, {chips = extras.hand_chips and hand_chips, mult = extras.mult and mult})
|
update_hand_text({delay = 0}, {chips = extras.hand_chips and hand_chips, mult = extras.mult and mult})
|
||||||
card_eval_status_text(scoring_hand[i], 'extra', nil, percent, nil, effects[ii].extra)
|
card_eval_status_text(scoring_hand[i], 'extra', nil, percent, nil, effects[ii].extra)
|
||||||
end
|
end
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
function live_test()
|
function live_test()
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function do_action(action)
|
function do_action(action)
|
||||||
|
385
game.lua
@ -173,6 +173,9 @@ function Game:start_up()
|
|||||||
self.shared_undiscovered_tarot = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["centers"], self.P_CENTERS.undiscovered_tarot.pos)
|
self.shared_undiscovered_tarot = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["centers"], self.P_CENTERS.undiscovered_tarot.pos)
|
||||||
|
|
||||||
self.shared_sticker_eternal = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 0,y = 0})
|
self.shared_sticker_eternal = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 0,y = 0})
|
||||||
|
self.shared_sticker_perishable = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 0,y = 2})
|
||||||
|
self.shared_sticker_rental = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 1,y = 2})
|
||||||
|
|
||||||
self.shared_stickers = {
|
self.shared_stickers = {
|
||||||
White = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 1,y = 0}),
|
White = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 1,y = 0}),
|
||||||
Red = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 2,y = 0}),
|
Red = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 2,y = 0}),
|
||||||
@ -204,8 +207,6 @@ function Game:start_up()
|
|||||||
self.E_MANAGER = EventManager()
|
self.E_MANAGER = EventManager()
|
||||||
self.SPEEDFACTOR = 1
|
self.SPEEDFACTOR = 1
|
||||||
|
|
||||||
|
|
||||||
self:prep_stage(G.STAGES.MAIN_MENU, G.STATES.SPLASH, true)
|
|
||||||
set_profile_progress()
|
set_profile_progress()
|
||||||
boot_timer('prep stage', 'splash prep',1)
|
boot_timer('prep stage', 'splash prep',1)
|
||||||
self:splash_screen()
|
self:splash_screen()
|
||||||
@ -227,7 +228,7 @@ function Game:init_item_prototypes()
|
|||||||
tag_foil = {name = 'Foil Tag', set = 'Tag', discovered = false, min_ante = nil, order = 4, config = {type = 'store_joker_modify', edition = 'foil', odds = 2}, requires = 'e_foil', pos = {x = 3,y = 0}},
|
tag_foil = {name = 'Foil Tag', set = 'Tag', discovered = false, min_ante = nil, order = 4, config = {type = 'store_joker_modify', edition = 'foil', odds = 2}, requires = 'e_foil', pos = {x = 3,y = 0}},
|
||||||
tag_holo = {name = 'Holographic Tag', set = 'Tag', discovered = false, min_ante = nil, order = 5, config = {type = 'store_joker_modify', edition = 'holo', odds = 3}, requires = 'e_holo', pos = {x = 0,y = 1}},
|
tag_holo = {name = 'Holographic Tag', set = 'Tag', discovered = false, min_ante = nil, order = 5, config = {type = 'store_joker_modify', edition = 'holo', odds = 3}, requires = 'e_holo', pos = {x = 0,y = 1}},
|
||||||
tag_polychrome = {name = 'Polychrome Tag', set = 'Tag', discovered = false, min_ante = nil, order = 6, config = {type = 'store_joker_modify', edition = 'polychrome', odds = 4}, requires = 'e_polychrome', pos = {x = 1,y = 1}},
|
tag_polychrome = {name = 'Polychrome Tag', set = 'Tag', discovered = false, min_ante = nil, order = 6, config = {type = 'store_joker_modify', edition = 'polychrome', odds = 4}, requires = 'e_polychrome', pos = {x = 1,y = 1}},
|
||||||
tag_investment = {name = 'Investment Tag', set = 'Tag', discovered = false, min_ante = nil, order = 7, config = {type = 'eval', dollars = 15}, pos = {x = 2,y = 1}},
|
tag_investment = {name = 'Investment Tag', set = 'Tag', discovered = false, min_ante = nil, order = 7, config = {type = 'eval', dollars = 25}, pos = {x = 2,y = 1}},
|
||||||
tag_voucher = {name = 'Voucher Tag', set = 'Tag', discovered = false, min_ante = nil, order = 8, config = {type = 'voucher_add'}, pos = {x = 3,y = 1}},
|
tag_voucher = {name = 'Voucher Tag', set = 'Tag', discovered = false, min_ante = nil, order = 8, config = {type = 'voucher_add'}, pos = {x = 3,y = 1}},
|
||||||
tag_boss = {name = 'Boss Tag', set = 'Tag', discovered = false, min_ante = nil, order = 9, config = {type = 'new_blind_choice', }, pos = {x = 0,y = 2}},
|
tag_boss = {name = 'Boss Tag', set = 'Tag', discovered = false, min_ante = nil, order = 9, config = {type = 'new_blind_choice', }, pos = {x = 0,y = 2}},
|
||||||
tag_standard = {name = 'Standard Tag', set = 'Tag', discovered = false, min_ante = 2, order = 10, config = {type = 'new_blind_choice', }, pos = {x = 1,y = 2}},
|
tag_standard = {name = 'Standard Tag', set = 'Tag', discovered = false, min_ante = 2, order = 10, config = {type = 'new_blind_choice', }, pos = {x = 1,y = 2}},
|
||||||
@ -364,165 +365,165 @@ function Game:init_item_prototypes()
|
|||||||
c_base={max = 500, freq = 1, line = 'base', name = "Default Base", pos = {x=1,y=0}, set = "Default", label = 'Base Card', effect = "Base", cost_mult = 1.0, config = {}},
|
c_base={max = 500, freq = 1, line = 'base', name = "Default Base", pos = {x=1,y=0}, set = "Default", label = 'Base Card', effect = "Base", cost_mult = 1.0, config = {}},
|
||||||
|
|
||||||
--Jokers
|
--Jokers
|
||||||
j_joker= {order = 1, unlocked = true, start_alerted = true, discovered = true, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 2, name = "Joker", pos = {x=0,y=0}, set = "Joker", effect = "Mult", cost_mult = 1.0, config = {mult = 4}},
|
j_joker= {order = 1, unlocked = true, start_alerted = true, discovered = true, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 2, name = "Joker", pos = {x=0,y=0}, set = "Joker", effect = "Mult", cost_mult = 1.0, config = {mult = 4}},
|
||||||
j_greedy_joker= {order = 2, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Greedy Joker", pos = {x=6,y=1}, set = "Joker", effect = "Suit Mult", cost_mult = 1.0, config = {extra = {s_mult = 4, suit = 'Diamonds'}}},
|
j_greedy_joker= {order = 2, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Greedy Joker", pos = {x=6,y=1}, set = "Joker", effect = "Suit Mult", cost_mult = 1.0, config = {extra = {s_mult = 3, suit = 'Diamonds'}}},
|
||||||
j_lusty_joker= {order = 3, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Lusty Joker", pos = {x=7,y=1}, set = "Joker", effect = "Suit Mult", cost_mult = 1.0, config = {extra = {s_mult = 4, suit = 'Hearts'}}},
|
j_lusty_joker= {order = 3, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Lusty Joker", pos = {x=7,y=1}, set = "Joker", effect = "Suit Mult", cost_mult = 1.0, config = {extra = {s_mult = 3, suit = 'Hearts'}}},
|
||||||
j_wrathful_joker= {order = 4, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Wrathful Joker", pos = {x=8,y=1}, set = "Joker", effect = "Suit Mult", cost_mult = 1.0, config = {extra = {s_mult = 4, suit = 'Spades'}}},
|
j_wrathful_joker= {order = 4, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Wrathful Joker", pos = {x=8,y=1}, set = "Joker", effect = "Suit Mult", cost_mult = 1.0, config = {extra = {s_mult = 3, suit = 'Spades'}}},
|
||||||
j_gluttenous_joker= {order = 5, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Gluttonous Joker", pos = {x=9,y=1}, set = "Joker", effect = "Suit Mult", cost_mult = 1.0, config = {extra = {s_mult = 4, suit = 'Clubs'}}},
|
j_gluttenous_joker= {order = 5, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Gluttonous Joker", pos = {x=9,y=1}, set = "Joker", effect = "Suit Mult", cost_mult = 1.0, config = {extra = {s_mult = 3, suit = 'Clubs'}}},
|
||||||
j_jolly= {order = 6, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 3, name = "Jolly Joker", pos = {x=2,y=0}, set = "Joker", effect = "Type Mult", cost_mult = 1.0, config = {t_mult = 8, type = 'Pair'}},
|
j_jolly= {order = 6, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 3, name = "Jolly Joker", pos = {x=2,y=0}, set = "Joker", effect = "Type Mult", cost_mult = 1.0, config = {t_mult = 8, type = 'Pair'}},
|
||||||
j_zany= {order = 7, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Zany Joker", pos = {x=3,y=0}, set = "Joker", effect = "Type Mult", cost_mult = 1.0, config = {t_mult = 12, type = 'Three of a Kind'}},
|
j_zany= {order = 7, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Zany Joker", pos = {x=3,y=0}, set = "Joker", effect = "Type Mult", cost_mult = 1.0, config = {t_mult = 12, type = 'Three of a Kind'}},
|
||||||
j_mad= {order = 8, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Mad Joker", pos = {x=4,y=0}, set = "Joker", effect = "Type Mult", cost_mult = 1.0, config = {t_mult = 20, type = 'Four of a Kind'}},
|
j_mad= {order = 8, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Mad Joker", pos = {x=4,y=0}, set = "Joker", effect = "Type Mult", cost_mult = 1.0, config = {t_mult = 10, type = 'Two Pair'}},
|
||||||
j_crazy= {order = 9, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Crazy Joker", pos = {x=5,y=0}, set = "Joker", effect = "Type Mult", cost_mult = 1.0, config = {t_mult = 12, type = 'Straight'}},
|
j_crazy= {order = 9, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Crazy Joker", pos = {x=5,y=0}, set = "Joker", effect = "Type Mult", cost_mult = 1.0, config = {t_mult = 12, type = 'Straight'}},
|
||||||
j_droll= {order = 10, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Droll Joker", pos = {x=6,y=0}, set = "Joker", effect = "Type Mult", cost_mult = 1.0, config = {t_mult = 10, type = 'Flush'}},
|
j_droll= {order = 10, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Droll Joker", pos = {x=6,y=0}, set = "Joker", effect = "Type Mult", cost_mult = 1.0, config = {t_mult = 10, type = 'Flush'}},
|
||||||
j_sly= {order = 11, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 3, name = "Sly Joker",set = "Joker", config = {t_chips = 50, type = 'Pair'}, pos = {x=0,y=14}},
|
j_sly= {order = 11, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 3, name = "Sly Joker",set = "Joker", config = {t_chips = 50, type = 'Pair'}, pos = {x=0,y=14}},
|
||||||
j_wily= {order = 12, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Wily Joker",set = "Joker", config = {t_chips = 100, type = 'Three of a Kind'}, pos = {x=1,y=14}},
|
j_wily= {order = 12, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Wily Joker",set = "Joker", config = {t_chips = 100, type = 'Three of a Kind'}, pos = {x=1,y=14}},
|
||||||
j_clever= {order = 13, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Clever Joker",set = "Joker", config = {t_chips = 150, type = 'Four of a Kind'}, pos = {x=2,y=14}},
|
j_clever= {order = 13, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Clever Joker",set = "Joker", config = {t_chips = 80, type = 'Two Pair'}, pos = {x=2,y=14}},
|
||||||
j_devious= {order = 14, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Devious Joker",set = "Joker", config = {t_chips = 100, type = 'Straight'}, pos = {x=3,y=14}},
|
j_devious= {order = 14, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Devious Joker",set = "Joker", config = {t_chips = 100, type = 'Straight'}, pos = {x=3,y=14}},
|
||||||
j_crafty= {order = 15, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Crafty Joker",set = "Joker", config = {t_chips = 80, type = 'Flush'}, pos = {x=4,y=14}},
|
j_crafty= {order = 15, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Crafty Joker",set = "Joker", config = {t_chips = 80, type = 'Flush'}, pos = {x=4,y=14}},
|
||||||
|
|
||||||
j_half= {order = 16, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Half Joker", pos = {x=7,y=0}, set = "Joker", effect = "Hand Size Mult", cost_mult = 1.0, config = {extra = {mult = 20, size = 3}}},
|
j_half= {order = 16, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Half Joker", pos = {x=7,y=0}, set = "Joker", effect = "Hand Size Mult", cost_mult = 1.0, config = {extra = {mult = 20, size = 3}}},
|
||||||
j_stencil= {order = 17, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 8, name = "Joker Stencil", pos = {x=2,y=5}, set = "Joker", effect = "Hand Size Mult", cost_mult = 1.0, config = {}},
|
j_stencil= {order = 17, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 8, name = "Joker Stencil", pos = {x=2,y=5}, set = "Joker", effect = "Hand Size Mult", cost_mult = 1.0, config = {}},
|
||||||
j_four_fingers= {order = 18, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 7, name = "Four Fingers", pos = {x=6,y=6}, set = "Joker", effect = "", config = {}},
|
j_four_fingers= {order = 18, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Four Fingers", pos = {x=6,y=6}, set = "Joker", effect = "", config = {}},
|
||||||
j_mime= {order = 19, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = "Mime", pos = {x=4,y=1}, set = "Joker", effect = "Hand card double", cost_mult = 1.0, config = {extra = 1}},
|
j_mime= {order = 19, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = "Mime", pos = {x=4,y=1}, set = "Joker", effect = "Hand card double", cost_mult = 1.0, config = {extra = 1}},
|
||||||
j_credit_card= {order = 20, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 1, cost = 1, name = "Credit Card", pos = {x=5,y=1}, set = "Joker", effect = "Credit", cost_mult = 1.0, config = {extra = 20}},
|
j_credit_card= {order = 20, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 1, name = "Credit Card", pos = {x=5,y=1}, set = "Joker", effect = "Credit", cost_mult = 1.0, config = {extra = 20}},
|
||||||
j_ceremonial= {order = 21, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Ceremonial Dagger", pos = {x=5,y=5}, set = "Joker", effect = "", config = {mult = 0}},
|
j_ceremonial= {order = 21, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = "Ceremonial Dagger", pos = {x=5,y=5}, set = "Joker", effect = "", config = {mult = 0}},
|
||||||
j_banner= {order = 22, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Banner", pos = {x=1,y=2}, set = "Joker", effect = "Discard Chips", cost_mult = 1.0, config = {extra = 40}},
|
j_banner= {order = 22, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Banner", pos = {x=1,y=2}, set = "Joker", effect = "Discard Chips", cost_mult = 1.0, config = {extra = 30}},
|
||||||
j_mystic_summit= {order = 23, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Mystic Summit", pos = {x=2,y=2}, set = "Joker", effect = "No Discard Mult", cost_mult = 1.0, config = {extra = {mult = 15, d_remaining = 0}}},
|
j_mystic_summit= {order = 23, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Mystic Summit", pos = {x=2,y=2}, set = "Joker", effect = "No Discard Mult", cost_mult = 1.0, config = {extra = {mult = 15, d_remaining = 0}}},
|
||||||
j_marble= {order = 24, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Marble Joker", pos = {x=3,y=2}, set = "Joker", effect = "Stone card hands", cost_mult = 1.0, config = {extra = 1}},
|
j_marble= {order = 24, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Marble Joker", pos = {x=3,y=2}, set = "Joker", effect = "Stone card hands", cost_mult = 1.0, config = {extra = 1}},
|
||||||
j_loyalty_card= {order = 25, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = "Loyalty Card", pos = {x=4,y=2}, set = "Joker", effect = "1 in 10 mult", cost_mult = 1.0, config = {extra = {Xmult = 4, every = 5, remaining = "5 remaining"}}},
|
j_loyalty_card= {order = 25, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = "Loyalty Card", pos = {x=4,y=2}, set = "Joker", effect = "1 in 10 mult", cost_mult = 1.0, config = {extra = {Xmult = 4, every = 5, remaining = "5 remaining"}}},
|
||||||
j_8_ball= {order = 26, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "8 Ball", pos = {x=0,y=5}, set = "Joker", effect = "Spawn Tarot", cost_mult = 1.0, config = {extra= 2}},
|
j_8_ball= {order = 26, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "8 Ball", pos = {x=0,y=5}, set = "Joker", effect = "Spawn Tarot", cost_mult = 1.0, config = {extra=4}},
|
||||||
j_misprint= {order = 27, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Misprint", pos = {x=6,y=2}, set = "Joker", effect = "Random Mult", cost_mult = 1.0, config = {extra = {max = 23, min = 0}}},
|
j_misprint= {order = 27, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Misprint", pos = {x=6,y=2}, set = "Joker", effect = "Random Mult", cost_mult = 1.0, config = {extra = {max = 23, min = 0}}},
|
||||||
j_dusk= {order = 28, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = "Dusk", pos = {x=4,y=7}, set = "Joker", effect = "", config = {extra = 1}, unlock_condition = {type = '', extra = '', hidden = true}},
|
j_dusk= {order = 28, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = "Dusk", pos = {x=4,y=7}, set = "Joker", effect = "", config = {extra = 1}, unlock_condition = {type = '', extra = '', hidden = true}},
|
||||||
j_raised_fist= {order = 29, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Raised Fist", pos = {x=8,y=2}, set = "Joker", effect = "Socialized Mult", cost_mult = 1.0, config = {}},
|
j_raised_fist= {order = 29, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Raised Fist", pos = {x=8,y=2}, set = "Joker", effect = "Socialized Mult", cost_mult = 1.0, config = {}},
|
||||||
j_chaos= {order = 30, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 1, cost = 4, name = "Chaos the Clown", pos = {x=1,y=0}, set = "Joker", effect = "Bonus Rerolls", cost_mult = 1.0, config = {extra = 1}},
|
j_chaos= {order = 30, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Chaos the Clown", pos = {x=1,y=0}, set = "Joker", effect = "Bonus Rerolls", cost_mult = 1.0, config = {extra = 1}},
|
||||||
|
|
||||||
j_fibonacci= {order = 31, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Fibonacci", pos = {x=1,y=5}, set = "Joker", effect = "Card Mult", cost_mult = 1.0, config = {extra = 8}},
|
j_fibonacci= {order = 31, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 8, name = "Fibonacci", pos = {x=1,y=5}, set = "Joker", effect = "Card Mult", cost_mult = 1.0, config = {extra = 8}},
|
||||||
j_steel_joker= {order = 32, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Steel Joker", pos = {x=7,y=2}, set = "Joker", effect = "Steel Card Buff", cost_mult = 1.0, config = {extra = 0.25}, enhancement_gate = 'm_steel'},
|
j_steel_joker= {order = 32, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Steel Joker", pos = {x=7,y=2}, set = "Joker", effect = "Steel Card Buff", cost_mult = 1.0, config = {extra = 0.2}, enhancement_gate = 'm_steel'},
|
||||||
j_scary_face= {order = 33, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Scary Face", pos = {x=2,y=3}, set = "Joker", effect = "Scary Face Cards", cost_mult = 1.0, config = {extra = 30}},
|
j_scary_face= {order = 33, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Scary Face", pos = {x=2,y=3}, set = "Joker", effect = "Scary Face Cards", cost_mult = 1.0, config = {extra = 30}},
|
||||||
j_abstract= {order = 34, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Abstract Joker", pos = {x=3,y=3}, set = "Joker", effect = "Joker Mult", cost_mult = 1.0, config = {extra = 3}},
|
j_abstract= {order = 34, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Abstract Joker", pos = {x=3,y=3}, set = "Joker", effect = "Joker Mult", cost_mult = 1.0, config = {extra = 3}},
|
||||||
j_delayed_grat= {order = 35, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 1, cost = 4, name = "Delayed Gratification", pos = {x=4,y=3}, set = "Joker", effect = "Discard dollars", cost_mult = 1.0, config = {extra = 2}},
|
j_delayed_grat= {order = 35, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Delayed Gratification", pos = {x=4,y=3}, set = "Joker", effect = "Discard dollars", cost_mult = 1.0, config = {extra = 2}},
|
||||||
j_hack= {order = 36, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Hack", pos = {x=5,y=2}, set = "Joker", effect = "Low Card double", cost_mult = 1.0, config = {extra = 1}},
|
j_hack= {order = 36, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Hack", pos = {x=5,y=2}, set = "Joker", effect = "Low Card double", cost_mult = 1.0, config = {extra = 1}},
|
||||||
j_pareidolia= {order = 37, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 5, name = "Pareidolia", pos = {x=6,y=3}, set = "Joker", effect = "All face cards", cost_mult = 1.0, config = {}},
|
j_pareidolia= {order = 37, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = "Pareidolia", pos = {x=6,y=3}, set = "Joker", effect = "All face cards", cost_mult = 1.0, config = {}},
|
||||||
j_gros_michel= {order = 38, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = false, rarity = 1, cost = 5, name = "Gros Michel", pos = {x=7,y=6}, set = "Joker", effect = "", config = {extra = {odds = 4, mult = 15}}, no_pool_flag = 'gros_michel_extinct'},
|
j_gros_michel= {order = 38, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = false, rarity = 1, cost = 5, name = "Gros Michel", pos = {x=7,y=6}, set = "Joker", effect = "", config = {extra = {odds = 6, mult = 15}}, no_pool_flag = 'gros_michel_extinct'},
|
||||||
j_even_steven= {order = 39, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Even Steven", pos = {x=8,y=3}, set = "Joker", effect = "Even Card Buff", cost_mult = 1.0, config = {extra = 4}},
|
j_even_steven= {order = 39, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Even Steven", pos = {x=8,y=3}, set = "Joker", effect = "Even Card Buff", cost_mult = 1.0, config = {extra = 4}},
|
||||||
j_odd_todd= {order = 40, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Odd Todd", pos = {x=9,y=3}, set = "Joker", effect = "Odd Card Buff", cost_mult = 1.0, config = {extra = 30}},
|
j_odd_todd= {order = 40, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Odd Todd", pos = {x=9,y=3}, set = "Joker", effect = "Odd Card Buff", cost_mult = 1.0, config = {extra = 31}},
|
||||||
j_scholar= {order = 41, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Scholar", pos = {x=0,y=4}, set = "Joker", effect = "Ace Buff", cost_mult = 1.0, config = {extra = {mult = 4, chips = 20}}},
|
j_scholar= {order = 41, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Scholar", pos = {x=0,y=4}, set = "Joker", effect = "Ace Buff", cost_mult = 1.0, config = {extra = {mult = 4, chips = 20}}},
|
||||||
j_business= {order = 42, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Business Card", pos = {x=1,y=4}, set = "Joker", effect = "Face Card dollar Chance", cost_mult = 1.0, config = {extra = 2}},
|
j_business= {order = 42, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Business Card", pos = {x=1,y=4}, set = "Joker", effect = "Face Card dollar Chance", cost_mult = 1.0, config = {extra = 2}},
|
||||||
j_supernova= {order = 43, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Supernova", pos = {x=2,y=4}, set = "Joker", effect = "Hand played mult", cost_mult = 1.0, config = {extra = 1}},
|
j_supernova= {order = 43, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Supernova", pos = {x=2,y=4}, set = "Joker", effect = "Hand played mult", cost_mult = 1.0, config = {extra = 1}},
|
||||||
j_ride_the_bus= {order = 44, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 6, name = "Ride the Bus", pos = {x=1,y=6}, set = "Joker", effect = "", config = {extra = 1}, unlock_condition = {type = 'discard_custom'}},
|
j_ride_the_bus= {order = 44, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 1, cost = 6, name = "Ride the Bus", pos = {x=1,y=6}, set = "Joker", effect = "", config = {extra = 1}, unlock_condition = {type = 'discard_custom'}},
|
||||||
j_space= {order = 45, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = "Space Joker", pos = {x=3,y=5}, set = "Joker", effect = "Upgrade Hand chance", cost_mult = 1.0, config = {extra = 4}},
|
j_space= {order = 45, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = "Space Joker", pos = {x=3,y=5}, set = "Joker", effect = "Upgrade Hand chance", cost_mult = 1.0, config = {extra = 4}},
|
||||||
|
|
||||||
j_egg= {order = 46, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 1, cost = 4, name = 'Egg', pos = {x = 0, y = 10}, set = 'Joker', config = {extra = 3}},
|
j_egg= {order = 46, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = 'Egg', pos = {x = 0, y = 10}, set = 'Joker', config = {extra = 3}},
|
||||||
j_burglar= {order = 47, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = 'Burglar', pos = {x = 1, y = 10}, set = 'Joker', config = {extra = 3}},
|
j_burglar= {order = 47, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = 'Burglar', pos = {x = 1, y = 10}, set = 'Joker', config = {extra = 3}},
|
||||||
j_blackboard= {order = 48, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = 'Blackboard', pos = {x = 2, y = 10}, set = 'Joker', config = {extra = 3}},
|
j_blackboard= {order = 48, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = 'Blackboard', pos = {x = 2, y = 10}, set = 'Joker', config = {extra = 3}},
|
||||||
j_runner= {order = 49, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = 'Runner', pos = {x = 3, y = 10}, set = 'Joker', config = {extra = {chips = 20, chip_mod = 10}}},
|
j_runner= {order = 49, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 1, cost = 5, name = 'Runner', pos = {x = 3, y = 10}, set = 'Joker', config = {extra = {chips = 0, chip_mod = 15}}},
|
||||||
j_ice_cream= {order = 50, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = false, rarity = 1, cost = 5, name = 'Ice Cream', pos = {x = 4, y = 10}, set = 'Joker', config = {extra = {chips = 100, chip_mod = 5}}},
|
j_ice_cream= {order = 50, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = false, rarity = 1, cost = 5, name = 'Ice Cream', pos = {x = 4, y = 10}, set = 'Joker', config = {extra = {chips = 100, chip_mod = 5}}},
|
||||||
j_dna= {order = 51, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = 'DNA', pos = {x = 5, y = 10}, set = 'Joker', config = {}},
|
j_dna= {order = 51, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = 'DNA', pos = {x = 5, y = 10}, set = 'Joker', config = {}},
|
||||||
j_splash= {order = 52, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 1, cost = 3, name = 'Splash', pos = {x = 6, y = 10}, set = 'Joker', config = {}},
|
j_splash= {order = 52, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 3, name = 'Splash', pos = {x = 6, y = 10}, set = 'Joker', config = {}},
|
||||||
j_blue_joker= {order = 53, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = 'Blue Joker', pos = {x = 7, y = 10}, set = 'Joker', config = {extra = 2}},
|
j_blue_joker= {order = 53, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = 'Blue Joker', pos = {x = 7, y = 10}, set = 'Joker', config = {extra = 2}},
|
||||||
j_sixth_sense= {order = 54, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 3, cost = 6, name = 'Sixth Sense', pos = {x = 8, y = 10}, set = 'Joker', config = {}},
|
j_sixth_sense= {order = 54, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = 'Sixth Sense', pos = {x = 8, y = 10}, set = 'Joker', config = {}},
|
||||||
j_constellation= {order = 55, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = 'Constellation', pos = {x = 9, y = 10}, set = 'Joker', config = {extra = 0.1, Xmult = 1}},
|
j_constellation= {order = 55, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = 'Constellation', pos = {x = 9, y = 10}, set = 'Joker', config = {extra = 0.1, Xmult = 1}},
|
||||||
j_hiker= {order = 56, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = 'Hiker', pos = {x = 0, y = 11}, set = 'Joker', config = {extra = 4}},
|
j_hiker= {order = 56, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = 'Hiker', pos = {x = 0, y = 11}, set = 'Joker', config = {extra = 5}},
|
||||||
j_faceless= {order = 57, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = 'Faceless Joker', pos = {x = 1, y = 11}, set = 'Joker', config = {extra = {dollars = 5, faces = 3}}},
|
j_faceless= {order = 57, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = 'Faceless Joker', pos = {x = 1, y = 11}, set = 'Joker', config = {extra = {dollars = 5, faces = 3}}},
|
||||||
j_green_joker= {order = 58, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = 'Green Joker', pos = {x = 2, y = 11}, set = 'Joker', config = {extra = {hand_add = 1, discard_sub = 1}}},
|
j_green_joker= {order = 58, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 1, cost = 4, name = 'Green Joker', pos = {x = 2, y = 11}, set = 'Joker', config = {extra = {hand_add = 1, discard_sub = 1}}},
|
||||||
j_superposition= {order = 59, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = 'Superposition', pos = {x = 3, y = 11}, set = 'Joker', config = {}},
|
j_superposition= {order = 59, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = 'Superposition', pos = {x = 3, y = 11}, set = 'Joker', config = {}},
|
||||||
j_todo_list= {order = 60, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = 'To Do List', pos = {x = 4, y = 11}, set = 'Joker', config = {extra = {dollars = 5, poker_hand = 'High Card'}}},
|
j_todo_list= {order = 60, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = 'To Do List', pos = {x = 4, y = 11}, set = 'Joker', config = {extra = {dollars = 4, poker_hand = 'High Card'}}},
|
||||||
|
|
||||||
j_cavendish= {order = 61, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = false, rarity = 1, cost = 4, name = "Cavendish", pos = {x=5,y=11}, set = "Joker", cost_mult = 1.0, config = {extra = {odds = 1000, Xmult = 3}}, yes_pool_flag = 'gros_michel_extinct'},
|
j_cavendish= {order = 61, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = false, rarity = 1, cost = 4, name = "Cavendish", pos = {x=5,y=11}, set = "Joker", cost_mult = 1.0, config = {extra = {odds = 1000, Xmult = 3}}, yes_pool_flag = 'gros_michel_extinct'},
|
||||||
j_card_sharp= {order = 62, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Card Sharp", pos = {x=6,y=11}, set = "Joker", cost_mult = 1.0, config = {extra = {Xmult = 3}}},
|
j_card_sharp= {order = 62, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Card Sharp", pos = {x=6,y=11}, set = "Joker", cost_mult = 1.0, config = {extra = {Xmult = 3}}},
|
||||||
j_red_card= {order = 63, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Red Card", pos = {x=7,y=11}, set = "Joker", cost_mult = 1.0, config = {extra = 3}},
|
j_red_card= {order = 63, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 1, cost = 5, name = "Red Card", pos = {x=7,y=11}, set = "Joker", cost_mult = 1.0, config = {extra = 3}},
|
||||||
j_madness= {order = 64, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Madness", pos = {x=8,y=11}, set = "Joker", cost_mult = 1.0, config = {extra = 0.5}},
|
j_madness= {order = 64, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 2, cost = 7, name = "Madness", pos = {x=8,y=11}, set = "Joker", cost_mult = 1.0, config = {extra = 0.5}},
|
||||||
j_square= {order = 65, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Square Joker", pos = {x=9,y=11}, set = "Joker", cost_mult = 1.0, config = {extra = {chips = 16, chip_mod = 4}}},
|
j_square= {order = 65, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 1, cost = 4, name = "Square Joker", pos = {x=9,y=11}, set = "Joker", cost_mult = 1.0, config = {extra = {chips = 0, chip_mod = 4}}},
|
||||||
j_seance= {order = 66, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 7, name = "Seance", pos = {x=0,y=12}, set = "Joker", cost_mult = 1.0, config = {extra = {poker_hand = 'Straight Flush'}}},
|
j_seance= {order = 66, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Seance", pos = {x=0,y=12}, set = "Joker", cost_mult = 1.0, config = {extra = {poker_hand = 'Straight Flush'}}},
|
||||||
j_riff_raff= {order = 67, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Riff-raff", pos = {x=1,y=12}, set = "Joker", cost_mult = 1.0, config = {extra = 2}},
|
j_riff_raff= {order = 67, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 6, name = "Riff-raff", pos = {x=1,y=12}, set = "Joker", cost_mult = 1.0, config = {extra = 2}},
|
||||||
j_vampire= {order = 68, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Vampire",set = "Joker", config = {extra = 0.2, Xmult = 1}, pos = {x=2,y=12}},
|
j_vampire= {order = 68, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 2, cost = 7, name = "Vampire",set = "Joker", config = {extra = 0.1, Xmult = 1}, pos = {x=2,y=12}},
|
||||||
j_shortcut= {order = 69, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 7, name = "Shortcut",set = "Joker", config = {}, pos = {x=3,y=12}},
|
j_shortcut= {order = 69, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Shortcut",set = "Joker", config = {}, pos = {x=3,y=12}},
|
||||||
j_hologram= {order = 70, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Hologram",set = "Joker", config = {extra = 0.25, Xmult = 1}, pos = {x=4,y=12}, soul_pos = {x=2, y=9},},
|
j_hologram= {order = 70, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 2, cost = 7, name = "Hologram",set = "Joker", config = {extra = 0.25, Xmult = 1}, pos = {x=4,y=12}, soul_pos = {x=2, y=9},},
|
||||||
j_vagabond= {order = 71, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Vagabond",set = "Joker", config = {extra = 3}, pos = {x=5,y=12}},
|
j_vagabond= {order = 71, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "Vagabond",set = "Joker", config = {extra = 4}, pos = {x=5,y=12}},
|
||||||
j_baron= {order = 72, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "Baron",set = "Joker", config = {extra = 1.5}, pos = {x=6,y=12}},
|
j_baron= {order = 72, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "Baron",set = "Joker", config = {extra = 1.5}, pos = {x=6,y=12}},
|
||||||
j_cloud_9= {order = 73, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = "Cloud 9",set = "Joker", config = {extra = 1}, pos = {x=7,y=12}},
|
j_cloud_9= {order = 73, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Cloud 9",set = "Joker", config = {extra = 1}, pos = {x=7,y=12}},
|
||||||
j_rocket= {order = 74, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = "Rocket",set = "Joker", config = {extra = {dollars = 1, increase = 2}}, pos = {x=8,y=12}},
|
j_rocket= {order = 74, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = "Rocket",set = "Joker", config = {extra = {dollars = 1, increase = 2}}, pos = {x=8,y=12}},
|
||||||
j_obelisk= {order = 75, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "Obelisk",set = "Joker", config = {extra = 0.2, Xmult = 1}, pos = {x=9,y=12}},
|
j_obelisk= {order = 75, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 3, cost = 8, name = "Obelisk",set = "Joker", config = {extra = 0.2, Xmult = 1}, pos = {x=9,y=12}},
|
||||||
|
|
||||||
j_midas_mask= {order = 76, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = "Midas Mask",set = "Joker", config = {}, pos = {x=0,y=13}},
|
j_midas_mask= {order = 76, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Midas Mask",set = "Joker", config = {}, pos = {x=0,y=13}},
|
||||||
j_luchador= {order = 77, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = false, rarity = 2, cost = 5, name = "Luchador",set = "Joker", config = {}, pos = {x=1,y=13}},
|
j_luchador= {order = 77, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = false, rarity = 2, cost = 5, name = "Luchador",set = "Joker", config = {}, pos = {x=1,y=13}},
|
||||||
j_photograph= {order = 78, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Photograph",set = "Joker", config = {extra = 2}, pos = {x=2,y=13}},
|
j_photograph= {order = 78, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Photograph",set = "Joker", config = {extra = 2}, pos = {x=2,y=13}},
|
||||||
j_gift= {order = 79, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = "Gift Card",set = "Joker", config = {extra = 1}, pos = {x=3,y=13}},
|
j_gift= {order = 79, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Gift Card",set = "Joker", config = {extra = 1}, pos = {x=3,y=13}},
|
||||||
j_turtle_bean= {order = 80, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = false, rarity = 2, cost = 6, name = "Turtle Bean",set = "Joker", config = {extra = {h_size = 5, h_mod = 1}}, pos = {x=4,y=13}},
|
j_turtle_bean= {order = 80, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = false, rarity = 2, cost = 6, name = "Turtle Bean",set = "Joker", config = {extra = {h_size = 5, h_mod = 1}}, pos = {x=4,y=13}},
|
||||||
j_erosion= {order = 81, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Erosion",set = "Joker", config = {extra = 4}, pos = {x=5,y=13}},
|
j_erosion= {order = 81, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Erosion",set = "Joker", config = {extra = 4}, pos = {x=5,y=13}},
|
||||||
j_reserved_parking= {order = 82, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Reserved Parking",set = "Joker", config = {extra = {odds = 2, dollars = 1}}, pos = {x=6,y=13}},
|
j_reserved_parking= {order = 82, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 6, name = "Reserved Parking",set = "Joker", config = {extra = {odds = 2, dollars = 1}}, pos = {x=6,y=13}},
|
||||||
j_mail= {order = 83, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Mail-In Rebate",set = "Joker", config = {extra = 3}, pos = {x=7,y=13}},
|
j_mail= {order = 83, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Mail-In Rebate",set = "Joker", config = {extra = 5}, pos = {x=7,y=13}},
|
||||||
j_to_the_moon= {order = 84, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 5, name = "To the Moon",set = "Joker", config = {extra = 1}, pos = {x=8,y=13}},
|
j_to_the_moon= {order = 84, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = "To the Moon",set = "Joker", config = {extra = 1}, pos = {x=8,y=13}},
|
||||||
j_hallucination= {order = 85, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Hallucination",set = "Joker", config = {extra = 2}, pos = {x=9,y=13}},
|
j_hallucination= {order = 85, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Hallucination",set = "Joker", config = {extra = 2}, pos = {x=9,y=13}},
|
||||||
j_fortune_teller= {order = 86, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 6, name = "Fortune Teller", pos = {x=7,y=5}, set = "Joker", effect = "", config = {extra = 1}},
|
j_fortune_teller= {order = 86, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 6, name = "Fortune Teller", pos = {x=7,y=5}, set = "Joker", effect = "", config = {extra = 1}},
|
||||||
j_juggler= {order = 87, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 1, cost = 4, name = "Juggler", pos = {x=0,y=1}, set = "Joker", effect = "Hand Size", cost_mult = 1.0, config = {h_size = 1}},
|
j_juggler= {order = 87, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Juggler", pos = {x=0,y=1}, set = "Joker", effect = "Hand Size", cost_mult = 1.0, config = {h_size = 1}},
|
||||||
j_drunkard= {order = 88, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 1, cost = 4, name = "Drunkard", pos = {x=1,y=1}, set = "Joker", effect = "Discard Size", cost_mult = 1.0, config = {d_size = 1}},
|
j_drunkard= {order = 88, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Drunkard", pos = {x=1,y=1}, set = "Joker", effect = "Discard Size", cost_mult = 1.0, config = {d_size = 1}},
|
||||||
j_stone= {order = 89, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Stone Joker", pos = {x=9,y=0}, set = "Joker", effect = "Stone Card Buff", cost_mult = 1.0, config = {extra = 25}, enhancement_gate = 'm_stone'},
|
j_stone= {order = 89, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Stone Joker", pos = {x=9,y=0}, set = "Joker", effect = "Stone Card Buff", cost_mult = 1.0, config = {extra = 25}, enhancement_gate = 'm_stone'},
|
||||||
j_golden= {order = 90, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 1, cost = 6, name = "Golden Joker", pos = {x=9,y=2}, set = "Joker", effect = "Bonus dollars", cost_mult = 1.0, config = {extra = 4}},
|
j_golden= {order = 90, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 6, name = "Golden Joker", pos = {x=9,y=2}, set = "Joker", effect = "Bonus dollars", cost_mult = 1.0, config = {extra = 4}},
|
||||||
|
|
||||||
j_lucky_cat= {order = 91, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Lucky Cat",set = "Joker", config = {Xmult = 1, extra = 0.2}, pos = {x=5,y=14}, enhancement_gate = 'm_lucky'},
|
j_lucky_cat= {order = 91, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = "Lucky Cat",set = "Joker", config = {Xmult = 1, extra = 0.25}, pos = {x=5,y=14}, enhancement_gate = 'm_lucky'},
|
||||||
j_baseball= {order = 92, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "Baseball Card",set = "Joker", config = {extra = 1.5}, pos = {x=6,y=14}},
|
j_baseball= {order = 92, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "Baseball Card",set = "Joker", config = {extra = 1.5}, pos = {x=6,y=14}},
|
||||||
j_bull= {order = 93, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Bull",set = "Joker", config = {extra = 2}, pos = {x=7,y=14}},
|
j_bull= {order = 93, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Bull",set = "Joker", config = {extra = 2}, pos = {x=7,y=14}},
|
||||||
j_diet_cola= {order = 94, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = false, rarity = 2, cost = 6, name = "Diet Cola",set = "Joker", config = {}, pos = {x=8,y=14}},
|
j_diet_cola= {order = 94, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = false, rarity = 2, cost = 6, name = "Diet Cola",set = "Joker", config = {}, pos = {x=8,y=14}},
|
||||||
j_trading= {order = 95, unlocked = true, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 5, name = "Trading Card",set = "Joker", config = {extra = 3}, pos = {x=9,y=14}},
|
j_trading= {order = 95, unlocked = true, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Trading Card",set = "Joker", config = {extra = 3}, pos = {x=9,y=14}},
|
||||||
j_flash= {order = 96, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = "Flash Card",set = "Joker", config = {extra = 2, mult = 0}, pos = {x=0,y=15}},
|
j_flash= {order = 96, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 2, cost = 5, name = "Flash Card",set = "Joker", config = {extra = 2, mult = 0}, pos = {x=0,y=15}},
|
||||||
j_popcorn= {order = 97, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = false, rarity = 1, cost = 5, name = "Popcorn",set = "Joker", config = {mult = 20, extra = 4}, pos = {x=1,y=15}},
|
j_popcorn= {order = 97, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = false, rarity = 1, cost = 5, name = "Popcorn",set = "Joker", config = {mult = 20, extra = 4}, pos = {x=1,y=15}},
|
||||||
j_trousers= {order = 98, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Spare Trousers",set = "Joker", config = {extra = 2}, pos = {x=4,y=15}},
|
j_trousers= {order = 98, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = "Spare Trousers",set = "Joker", config = {extra = 2}, pos = {x=4,y=15}},
|
||||||
j_ancient= {order = 99, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "Ancient Joker",set = "Joker", config = {extra = 1.5}, pos = {x=7,y=15}},
|
j_ancient= {order = 99, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "Ancient Joker",set = "Joker", config = {extra = 1.5}, pos = {x=7,y=15}},
|
||||||
j_ramen= {order = 100, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = false, rarity = 2, cost = 6, name = "Ramen",set = "Joker", config = {Xmult = 2, extra = 0.01}, pos = {x=2,y=15}},
|
j_ramen= {order = 100, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = false, rarity = 2, cost = 6, name = "Ramen",set = "Joker", config = {Xmult = 2, extra = 0.01}, pos = {x=2,y=15}},
|
||||||
j_walkie_talkie= {order = 101, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Walkie Talkie",set = "Joker", config = {extra = {chips = 10, mult = 4}}, pos = {x=8,y=15}},
|
j_walkie_talkie= {order = 101, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Walkie Talkie",set = "Joker", config = {extra = {chips = 10, mult = 4}}, pos = {x=8,y=15}},
|
||||||
j_selzer= {order = 102, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = false, rarity = 2, cost = 6, name = "Seltzer",set = "Joker", config = {extra = 10}, pos = {x=3,y=15}},
|
j_selzer= {order = 102, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = false, rarity = 2, cost = 6, name = "Seltzer",set = "Joker", config = {extra = 10}, pos = {x=3,y=15}},
|
||||||
j_castle= {order = 103, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Castle",set = "Joker", config = {extra = {chips = 0, chip_mod = 3}}, pos = {x=9,y=15}},
|
j_castle= {order = 103, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = "Castle",set = "Joker", config = {extra = {chips = 0, chip_mod = 3}}, pos = {x=9,y=15}},
|
||||||
j_smiley= {order = 104, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Smiley Face",set = "Joker", config = {extra = 4}, pos = {x=6,y=15}},
|
j_smiley= {order = 104, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Smiley Face",set = "Joker", config = {extra = 5}, pos = {x=6,y=15}},
|
||||||
j_campfire= {order = 105, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 9, name = "Campfire",set = "Joker", config = {extra = 0.5}, pos = {x=5,y=15}},
|
j_campfire= {order = 105, unlocked = true, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 9, name = "Campfire",set = "Joker", config = {extra = 0.25}, pos = {x=5,y=15}},
|
||||||
|
|
||||||
j_ticket= {order = 106, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Golden Ticket", pos = {x=5,y=3}, set = "Joker", effect = "dollars for Gold cards", cost_mult = 1.0, config = {extra = 3},unlock_condition = {type = 'hand_contents', extra = 'Gold'}, enhancement_gate = 'm_gold'},
|
j_ticket= {order = 106, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Golden Ticket", pos = {x=5,y=3}, set = "Joker", effect = "dollars for Gold cards", cost_mult = 1.0, config = {extra = 4},unlock_condition = {type = 'hand_contents', extra = 'Gold'}, enhancement_gate = 'm_gold'},
|
||||||
j_mr_bones= {order = 107, unlocked = false, discovered = false, blueprint_compat = false, eternal_compat = false, rarity = 2, cost = 5, name = "Mr. Bones", pos = {x=3,y=4}, set = "Joker", effect = "Prevent Death", cost_mult = 1.0, config = {},unlock_condition = {type = 'c_losses', extra = 5}},
|
j_mr_bones= {order = 107, unlocked = false, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = false, rarity = 2, cost = 5, name = "Mr. Bones", pos = {x=3,y=4}, set = "Joker", effect = "Prevent Death", cost_mult = 1.0, config = {},unlock_condition = {type = 'c_losses', extra = 5}},
|
||||||
j_acrobat= {order = 108, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Acrobat", pos = {x=2,y=1}, set = "Joker", effect = "Shop size", cost_mult = 1.0, config = {extra = 3},unlock_condition = {type = 'c_hands_played', extra = 200}},
|
j_acrobat= {order = 108, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Acrobat", pos = {x=2,y=1}, set = "Joker", effect = "Shop size", cost_mult = 1.0, config = {extra = 3},unlock_condition = {type = 'c_hands_played', extra = 200}},
|
||||||
j_sock_and_buskin= {order = 109, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Sock and Buskin", pos = {x=3,y=1}, set = "Joker", effect = "Face card double", cost_mult = 1.0, config = {extra = 1},unlock_condition = {type = 'c_face_cards_played', extra = 300}},
|
j_sock_and_buskin= {order = 109, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Sock and Buskin", pos = {x=3,y=1}, set = "Joker", effect = "Face card double", cost_mult = 1.0, config = {extra = 1},unlock_condition = {type = 'c_face_cards_played', extra = 300}},
|
||||||
j_swashbuckler= {order = 110, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Swashbuckler", pos = {x=9,y=5}, set = "Joker", effect = "Set Mult", cost_mult = 1.0, config = {mult = 1},unlock_condition = {type = 'c_jokers_sold', extra = 20}},
|
j_swashbuckler= {order = 110, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Swashbuckler", pos = {x=9,y=5}, set = "Joker", effect = "Set Mult", cost_mult = 1.0, config = {mult = 1},unlock_condition = {type = 'c_jokers_sold', extra = 20}},
|
||||||
j_troubadour= {order = 111, unlocked = false, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = "Troubadour", pos = {x=0,y=2}, set = "Joker", effect = "Hand Size, Plays", cost_mult = 1.0, config = {extra = {h_size = 2, h_plays = -1}}, unlock_condition = {type = 'round_win', extra = 5}},
|
j_troubadour= {order = 111, unlocked = false, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Troubadour", pos = {x=0,y=2}, set = "Joker", effect = "Hand Size, Plays", cost_mult = 1.0, config = {extra = {h_size = 2, h_plays = -1}}, unlock_condition = {type = 'round_win', extra = 5}},
|
||||||
j_certificate= {order = 112, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Certificate", pos = {x=8,y=8}, set = "Joker", effect = "", config = {}, unlock_condition = {type = 'double_gold'}},
|
j_certificate= {order = 112, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Certificate", pos = {x=8,y=8}, set = "Joker", effect = "", config = {}, unlock_condition = {type = 'double_gold'}},
|
||||||
j_smeared= {order = 113, unlocked = false, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 7, name = "Smeared Joker", pos = {x=4,y=6}, set = "Joker", effect = "", config = {}, unlock_condition = {type = 'modify_deck', extra = {count = 3, enhancement = 'Wild Card', e_key = 'm_wild'}}},
|
j_smeared= {order = 113, unlocked = false, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Smeared Joker", pos = {x=4,y=6}, set = "Joker", effect = "", config = {}, unlock_condition = {type = 'modify_deck', extra = {count = 3, enhancement = 'Wild Card', e_key = 'm_wild'}}},
|
||||||
j_throwback= {order = 114, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Throwback", pos = {x=5,y=7}, set = "Joker", effect = "", config = {extra = 0.25}, unlock_condition = {type = 'continue_game'}},
|
j_throwback= {order = 114, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Throwback", pos = {x=5,y=7}, set = "Joker", effect = "", config = {extra = 0.25}, unlock_condition = {type = 'continue_game'}},
|
||||||
j_hanging_chad= {order = 115, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Hanging Chad", pos = {x=9,y=6}, set = "Joker", effect = "", config = {extra = 1}, unlock_condition = {type = 'round_win', extra = 'High Card'}},
|
j_hanging_chad= {order = 115, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 4, name = "Hanging Chad", pos = {x=9,y=6}, set = "Joker", effect = "", config = {extra = 2}, unlock_condition = {type = 'round_win', extra = 'High Card'}},
|
||||||
j_rough_gem= {order = 116, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Rough Gem", pos = {x=9,y=7}, set = "Joker", effect = "", config = {extra = 1}, unlock_condition = {type = 'modify_deck', extra = {count = 30, suit = 'Diamonds'}}},
|
j_rough_gem= {order = 116, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Rough Gem", pos = {x=9,y=7}, set = "Joker", effect = "", config = {extra = 1}, unlock_condition = {type = 'modify_deck', extra = {count = 30, suit = 'Diamonds'}}},
|
||||||
j_bloodstone= {order = 117, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Bloodstone", pos = {x=0,y=8}, set = "Joker", effect = "", config = {extra = {odds = 3, Xmult = 2}}, unlock_condition = {type = 'modify_deck', extra = {count = 30, suit = 'Hearts'}}},
|
j_bloodstone= {order = 117, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Bloodstone", pos = {x=0,y=8}, set = "Joker", effect = "", config = {extra = {odds = 2, Xmult = 1.5}}, unlock_condition = {type = 'modify_deck', extra = {count = 30, suit = 'Hearts'}}},
|
||||||
j_arrowhead= {order = 118, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Arrowhead", pos = {x=1,y=8}, set = "Joker", effect = "", config = {extra = 50}, unlock_condition = {type = 'modify_deck', extra = {count = 30, suit = 'Spades'}}},
|
j_arrowhead= {order = 118, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Arrowhead", pos = {x=1,y=8}, set = "Joker", effect = "", config = {extra = 50}, unlock_condition = {type = 'modify_deck', extra = {count = 30, suit = 'Spades'}}},
|
||||||
j_onyx_agate= {order = 119, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Onyx Agate", pos = {x=2,y=8}, set = "Joker", effect = "", config = {extra = 8}, unlock_condition = {type = 'modify_deck', extra = {count = 30, suit = 'Clubs'}}},
|
j_onyx_agate= {order = 119, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Onyx Agate", pos = {x=2,y=8}, set = "Joker", effect = "", config = {extra = 7}, unlock_condition = {type = 'modify_deck', extra = {count = 30, suit = 'Clubs'}}},
|
||||||
j_glass= {order = 120, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Glass Joker", pos = {x=1,y=3}, set = "Joker", effect = "Glass Card", cost_mult = 1.0, config = {extra = 0.5, Xmult = 1}, unlock_condition = {type = 'modify_deck', extra = {count = 5, enhancement = 'Glass Card', e_key = 'm_glass'}}, enhancement_gate = 'm_glass'},
|
j_glass= {order = 120, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = "Glass Joker", pos = {x=1,y=3}, set = "Joker", effect = "Glass Card", cost_mult = 1.0, config = {extra = 0.75, Xmult = 1}, unlock_condition = {type = 'modify_deck', extra = {count = 5, enhancement = 'Glass Card', e_key = 'm_glass'}}, enhancement_gate = 'm_glass'},
|
||||||
|
|
||||||
j_ring_master= {order = 121, unlocked = false, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 5, name = "Showman", pos = {x=6,y=5}, set = "Joker", effect = "", config = {}, unlock_condition = {type = 'ante_up', ante = 4}},
|
j_ring_master= {order = 121, unlocked = false, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 5, name = "Showman", pos = {x=6,y=5}, set = "Joker", effect = "", config = {}, unlock_condition = {type = 'ante_up', ante = 4}},
|
||||||
j_flower_pot= {order = 122, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Flower Pot", pos = {x=0,y=6}, set = "Joker", effect = "", config = {extra = 3}, unlock_condition = {type = 'ante_up', ante = 8}},
|
j_flower_pot= {order = 122, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Flower Pot", pos = {x=0,y=6}, set = "Joker", effect = "", config = {extra = 3}, unlock_condition = {type = 'ante_up', ante = 8}},
|
||||||
j_blueprint= {order = 123, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 10,name = "Blueprint", pos = {x=0,y=3}, set = "Joker", effect = "Copycat", cost_mult = 1.0, config = {},unlock_condition = {type = 'win_custom'}},
|
j_blueprint= {order = 123, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 10,name = "Blueprint", pos = {x=0,y=3}, set = "Joker", effect = "Copycat", cost_mult = 1.0, config = {},unlock_condition = {type = 'win_custom'}},
|
||||||
j_wee= {order = 124, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "Wee Joker", pos = {x=0,y=0}, set = "Joker", effect = "", config = {extra = {chips = 10, chip_mod = 8}}, unlock_condition = {type = 'win', n_rounds = 18}},
|
j_wee= {order = 124, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = false, eternal_compat = true, rarity = 3, cost = 8, name = "Wee Joker", pos = {x=0,y=0}, set = "Joker", effect = "", config = {extra = {chips = 0, chip_mod = 8}}, unlock_condition = {type = 'win', n_rounds = 18}},
|
||||||
j_merry_andy= {order = 125, unlocked = false, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 7, name = "Merry Andy", pos = {x=8,y=0}, set = "Joker", effect = "", cost_mult = 1.0, config = {d_size = 3, h_size = -1}, unlock_condition = {type = 'win', n_rounds = 12}},
|
j_merry_andy= {order = 125, unlocked = false, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Merry Andy", pos = {x=8,y=0}, set = "Joker", effect = "", cost_mult = 1.0, config = {d_size = 3, h_size = -1}, unlock_condition = {type = 'win', n_rounds = 12}},
|
||||||
j_oops= {order = 126, unlocked = false, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 4, name = "Oops! All 6s", pos = {x=5,y=6}, set = "Joker", effect = "", config = {}, unlock_condition = {type = 'chip_score', chips = 10000}},
|
j_oops= {order = 126, unlocked = false, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 4, name = "Oops! All 6s", pos = {x=5,y=6}, set = "Joker", effect = "", config = {}, unlock_condition = {type = 'chip_score', chips = 10000}},
|
||||||
j_idol= {order = 127, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "The Idol", pos = {x=6,y=7}, set = "Joker", effect = "", config = {extra = 2}, unlock_condition = {type = 'chip_score', chips = 1000000}},
|
j_idol= {order = 127, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "The Idol", pos = {x=6,y=7}, set = "Joker", effect = "", config = {extra = 2}, unlock_condition = {type = 'chip_score', chips = 1000000}},
|
||||||
j_seeing_double= {order = 128, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Seeing Double", pos = {x=4,y=4}, set = "Joker", effect = "X1.5 Mult club 7", cost_mult = 1.0, config = {extra = 2},unlock_condition = {type = 'hand_contents', extra = 'four 7 of Clubs'}},
|
j_seeing_double= {order = 128, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Seeing Double", pos = {x=4,y=4}, set = "Joker", effect = "X1.5 Mult club 7", cost_mult = 1.0, config = {extra = 2},unlock_condition = {type = 'hand_contents', extra = 'four 7 of Clubs'}},
|
||||||
j_matador= {order = 129, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Matador", pos = {x=4,y=5}, set = "Joker", effect = "", config = {extra = 8}, unlock_condition = {type = 'round_win'}},
|
j_matador= {order = 129, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Matador", pos = {x=4,y=5}, set = "Joker", effect = "", config = {extra = 8}, unlock_condition = {type = 'round_win'}},
|
||||||
j_hit_the_road= {order = 130, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "Hit the Road", pos = {x=8,y=5}, set = "Joker", effect = "Jack Discard Effect", cost_mult = 1.0, config = {extra = 0.5}, unlock_condition = {type = 'discard_custom'}},
|
j_hit_the_road= {order = 130, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "Hit the Road", pos = {x=8,y=5}, set = "Joker", effect = "Jack Discard Effect", cost_mult = 1.0, config = {extra = 0.5}, unlock_condition = {type = 'discard_custom'}},
|
||||||
j_duo= {order = 131, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "The Duo", pos = {x=5,y=4}, set = "Joker", effect = "X1.5 Mult", cost_mult = 1.0, config = {Xmult = 2, type = 'Pair'}, unlock_condition = {type = 'win_no_hand', extra = 'Pair'}},
|
j_duo= {order = 131, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "The Duo", pos = {x=5,y=4}, set = "Joker", effect = "X1.5 Mult", cost_mult = 1.0, config = {Xmult = 2, type = 'Pair'}, unlock_condition = {type = 'win_no_hand', extra = 'Pair'}},
|
||||||
j_trio= {order = 132, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "The Trio", pos = {x=6,y=4}, set = "Joker", effect = "X2 Mult", cost_mult = 1.0, config = {Xmult = 3, type = 'Three of a Kind'}, unlock_condition = {type = 'win_no_hand', extra = 'Three of a Kind'}},
|
j_trio= {order = 132, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "The Trio", pos = {x=6,y=4}, set = "Joker", effect = "X2 Mult", cost_mult = 1.0, config = {Xmult = 3, type = 'Three of a Kind'}, unlock_condition = {type = 'win_no_hand', extra = 'Three of a Kind'}},
|
||||||
j_family= {order = 133, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "The Family", pos = {x=7,y=4}, set = "Joker", effect = "X3 Mult", cost_mult = 1.0, config = {Xmult = 4, type = 'Four of a Kind'}, unlock_condition = {type = 'win_no_hand', extra = 'Four of a Kind'}},
|
j_family= {order = 133, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "The Family", pos = {x=7,y=4}, set = "Joker", effect = "X3 Mult", cost_mult = 1.0, config = {Xmult = 4, type = 'Four of a Kind'}, unlock_condition = {type = 'win_no_hand', extra = 'Four of a Kind'}},
|
||||||
j_order= {order = 134, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "The Order", pos = {x=8,y=4}, set = "Joker", effect = "X3 Mult", cost_mult = 1.0, config = {Xmult = 3, type = 'Straight'}, unlock_condition = {type = 'win_no_hand', extra = 'Straight'}},
|
j_order= {order = 134, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "The Order", pos = {x=8,y=4}, set = "Joker", effect = "X3 Mult", cost_mult = 1.0, config = {Xmult = 3, type = 'Straight'}, unlock_condition = {type = 'win_no_hand', extra = 'Straight'}},
|
||||||
j_tribe= {order = 135, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "The Tribe", pos = {x=9,y=4}, set = "Joker", effect = "X3 Mult", cost_mult = 1.0, config = {Xmult = 2, type = 'Flush'}, unlock_condition = {type = 'win_no_hand', extra = 'Flush'}},
|
j_tribe= {order = 135, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "The Tribe", pos = {x=9,y=4}, set = "Joker", effect = "X3 Mult", cost_mult = 1.0, config = {Xmult = 2, type = 'Flush'}, unlock_condition = {type = 'win_no_hand', extra = 'Flush'}},
|
||||||
|
|
||||||
j_stuntman= {order = 136, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Stuntman", pos = {x=8,y=6}, set = "Joker", effect = "", config = {extra = {h_size = 2, chip_mod = 300}}, unlock_condition = {type = 'chip_score', chips = 100000000}},
|
j_stuntman= {order = 136, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 7, name = "Stuntman", pos = {x=8,y=6}, set = "Joker", effect = "", config = {extra = {h_size = 2, chip_mod = 250}}, unlock_condition = {type = 'chip_score', chips = 100000000}},
|
||||||
j_invisible= {order = 137, unlocked = false, discovered = false, blueprint_compat = false, eternal_compat = false, rarity = 3, cost = 10, name = "Invisible Joker", pos = {x=1,y=7}, set = "Joker", effect = "", config = {extra = 3}, unlock_condition = {type = 'win_custom'}},
|
j_invisible= {order = 137, unlocked = false, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = false, rarity = 3, cost = 8, name = "Invisible Joker", pos = {x=1,y=7}, set = "Joker", effect = "", config = {extra = 2}, unlock_condition = {type = 'win_custom'}},
|
||||||
j_brainstorm= {order = 138, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 10, name = "Brainstorm", pos = {x=7,y=7}, set = "Joker", effect = "Copycat", config = {}, unlock_condition = {type = 'discard_custom'}},
|
j_brainstorm= {order = 138, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 10, name = "Brainstorm", pos = {x=7,y=7}, set = "Joker", effect = "Copycat", config = {}, unlock_condition = {type = 'discard_custom'}},
|
||||||
j_satellite= {order = 139, unlocked = false, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 6, name = "Satellite", pos = {x=8,y=7}, set = "Joker", effect = "", config = {extra = 1}, unlock_condition = {type = 'money', extra = 400}},
|
j_satellite= {order = 139, unlocked = false, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Satellite", pos = {x=8,y=7}, set = "Joker", effect = "", config = {extra = 1}, unlock_condition = {type = 'money', extra = 400}},
|
||||||
j_shoot_the_moon= {order = 140, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Shoot the Moon", pos = {x=2,y=6}, set = "Joker", effect = "", config = {extra = 13}, unlock_condition = {type = 'play_all_hearts'}},
|
j_shoot_the_moon= {order = 140, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 5, name = "Shoot the Moon", pos = {x=2,y=6}, set = "Joker", effect = "", config = {extra = 13}, unlock_condition = {type = 'play_all_hearts'}},
|
||||||
j_drivers_license= {order = 141, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 3, cost = 7, name = "Driver's License", pos = {x=0,y=7}, set = "Joker", effect = "", config = {extra = 3}, unlock_condition = {type = 'modify_deck', extra = {count = 16, tally = 'total'}}},
|
j_drivers_license= {order = 141, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 7, name = "Driver's License", pos = {x=0,y=7}, set = "Joker", effect = "", config = {extra = 3}, unlock_condition = {type = 'modify_deck', extra = {count = 16, tally = 'total'}}},
|
||||||
j_cartomancer= {order = 142, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Cartomancer", pos = {x=7,y=3}, set = "Joker", effect = "Tarot Buff", cost_mult = 1.0, config = {}, unlock_condition = {type = 'discover_amount', tarot_count = 22}},
|
j_cartomancer= {order = 142, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Cartomancer", pos = {x=7,y=3}, set = "Joker", effect = "Tarot Buff", cost_mult = 1.0, config = {}, unlock_condition = {type = 'discover_amount', tarot_count = 22}},
|
||||||
j_astronomer= {order = 143, unlocked = false, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 2, cost = 8, name = "Astronomer", pos = {x=2,y=7}, set = "Joker", effect = "", config = {}, unlock_condition = {type = 'discover_amount', planet_count = 12}},
|
j_astronomer= {order = 143, unlocked = false, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 8, name = "Astronomer", pos = {x=2,y=7}, set = "Joker", effect = "", config = {}, unlock_condition = {type = 'discover_amount', planet_count = 12}},
|
||||||
j_burnt= {order = 144, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 6, name = "Burnt Joker", pos = {x=3,y=7}, set = "Joker", effect = "", config = {h_size = 0, extra = 4}, unlock_condition = {type = 'c_cards_sold', extra = 50}},
|
j_burnt= {order = 144, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 3, cost = 8, name = "Burnt Joker", pos = {x=3,y=7}, set = "Joker", effect = "", config = {h_size = 0, extra = 4}, unlock_condition = {type = 'c_cards_sold', extra = 50}},
|
||||||
j_bootstraps= {order = 145, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Bootstraps", pos = {x=9,y=8}, set = "Joker", effect = "", config = {extra = {mult = 2, dollars = 5}}, unlock_condition = {type = 'modify_jokers', extra = {polychrome = true, count = 2}}},
|
j_bootstraps= {order = 145, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 2, cost = 7, name = "Bootstraps", pos = {x=9,y=8}, set = "Joker", effect = "", config = {extra = {mult = 2, dollars = 5}}, unlock_condition = {type = 'modify_jokers', extra = {polychrome = true, count = 2}}},
|
||||||
j_caino= {order = 146, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 4, cost = 20, name = "Caino", pos = {x=3,y=8}, soul_pos = {x=3, y=9}, set = "Joker", effect = "", config = {extra = 1}, unlock_condition = {type = '', extra = '', hidden = true}},
|
j_caino= {order = 146, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 4, cost = 20, name = "Caino", pos = {x=3,y=8}, soul_pos = {x=3, y=9}, set = "Joker", effect = "", config = {extra = 1}, unlock_condition = {type = '', extra = '', hidden = true}},
|
||||||
j_triboulet= {order = 147, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 4, cost = 20, name = "Triboulet", pos = {x=4,y=8}, soul_pos = {x=4, y=9}, set = "Joker", effect = "", config = {extra = 2}, unlock_condition = {type = '', extra = '', hidden = true}},
|
j_triboulet= {order = 147, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 4, cost = 20, name = "Triboulet", pos = {x=4,y=8}, soul_pos = {x=4, y=9}, set = "Joker", effect = "", config = {extra = 2}, unlock_condition = {type = '', extra = '', hidden = true}},
|
||||||
j_yorick= {order = 148, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 4, cost = 20, name = "Yorick", pos = {x=5,y=8}, soul_pos = {x=5, y=9}, set = "Joker", effect = "", config = {extra = {xmult = 5, discards = 23}}, unlock_condition = {type = '', extra = '', hidden = true}},
|
j_yorick= {order = 148, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 4, cost = 20, name = "Yorick", pos = {x=5,y=8}, soul_pos = {x=5, y=9}, set = "Joker", effect = "", config = {extra = {xmult = 1, discards = 23}}, unlock_condition = {type = '', extra = '', hidden = true}},
|
||||||
j_chicot= {order = 149, unlocked = false, discovered = false, blueprint_compat = false, eternal_compat = true, rarity = 4, cost = 20, name = "Chicot", pos = {x=6,y=8}, soul_pos = {x=6, y=9}, set = "Joker", effect = "", config = {}, unlock_condition = {type = '', extra = '', hidden = true}},
|
j_chicot= {order = 149, unlocked = false, discovered = false, blueprint_compat = false, perishable_compat = true, eternal_compat = true, rarity = 4, cost = 20, name = "Chicot", pos = {x=6,y=8}, soul_pos = {x=6, y=9}, set = "Joker", effect = "", config = {}, unlock_condition = {type = '', extra = '', hidden = true}},
|
||||||
j_perkeo= {order = 150, unlocked = false, discovered = false, blueprint_compat = true, eternal_compat = true, rarity = 4, cost = 20, name = "Perkeo", pos = {x=7,y=8}, soul_pos = {x=7, y=9}, set = "Joker", effect = "", config = {}, unlock_condition = {type = '', extra = '', hidden = true}},
|
j_perkeo= {order = 150, unlocked = false, discovered = false, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 4, cost = 20, name = "Perkeo", pos = {x=7,y=8}, soul_pos = {x=7, y=9}, set = "Joker", effect = "", config = {}, unlock_condition = {type = '', extra = '', hidden = true}},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -530,7 +531,7 @@ function Game:init_item_prototypes()
|
|||||||
|
|
||||||
--Tarots
|
--Tarots
|
||||||
c_fool= {order = 1, discovered = false, cost = 3, consumeable = true, name = "The Fool", pos = {x=0,y=0}, set = "Tarot", effect = "Disable Blind Effect", cost_mult = 1.0, config = {}},
|
c_fool= {order = 1, discovered = false, cost = 3, consumeable = true, name = "The Fool", pos = {x=0,y=0}, set = "Tarot", effect = "Disable Blind Effect", cost_mult = 1.0, config = {}},
|
||||||
c_magician= {order = 2, discovered = false, cost = 3, consumeable = true, name = "The Magician", pos = {x=1,y=0}, set = "Tarot", effect = "Enhance", cost_mult = 1.0, config = {mod_conv = 'm_lucky', max_highlighted = 1}},
|
c_magician= {order = 2, discovered = false, cost = 3, consumeable = true, name = "The Magician", pos = {x=1,y=0}, set = "Tarot", effect = "Enhance", cost_mult = 1.0, config = {mod_conv = 'm_lucky', max_highlighted = 2}},
|
||||||
c_high_priestess= {order = 3, discovered = false, cost = 3, consumeable = true, name = "The High Priestess", pos = {x=2,y=0}, set = "Tarot", effect = "Round Bonus", cost_mult = 1.0, config = {planets = 2}},
|
c_high_priestess= {order = 3, discovered = false, cost = 3, consumeable = true, name = "The High Priestess", pos = {x=2,y=0}, set = "Tarot", effect = "Round Bonus", cost_mult = 1.0, config = {planets = 2}},
|
||||||
c_empress= {order = 4, discovered = false, cost = 3, consumeable = true, name = "The Empress", pos = {x=3,y=0}, set = "Tarot", effect = "Enhance", cost_mult = 1.0, config = {mod_conv = 'm_mult', max_highlighted = 2}},
|
c_empress= {order = 4, discovered = false, cost = 3, consumeable = true, name = "The Empress", pos = {x=3,y=0}, set = "Tarot", effect = "Enhance", cost_mult = 1.0, config = {mod_conv = 'm_mult', max_highlighted = 2}},
|
||||||
c_emperor= {order = 5, discovered = false, cost = 3, consumeable = true, name = "The Emperor", pos = {x=4,y=0}, set = "Tarot", effect = "Round Bonus", cost_mult = 1.0, config = {tarots = 2}},
|
c_emperor= {order = 5, discovered = false, cost = 3, consumeable = true, name = "The Emperor", pos = {x=4,y=0}, set = "Tarot", effect = "Round Bonus", cost_mult = 1.0, config = {tarots = 2}},
|
||||||
@ -1002,7 +1003,6 @@ function Game:set_render_settings()
|
|||||||
self.SETTINGS.GRAPHICS.texture_scaling == 1 and 'nearest' or 'linear',
|
self.SETTINGS.GRAPHICS.texture_scaling == 1 and 'nearest' or 'linear',
|
||||||
self.SETTINGS.GRAPHICS.texture_scaling == 1 and 'nearest' or 'linear', 1)
|
self.SETTINGS.GRAPHICS.texture_scaling == 1 and 'nearest' or 'linear', 1)
|
||||||
|
|
||||||
--self.CANVAS = self.CANVAS or love.graphics.newCanvas(500, 500, {readable = true})
|
|
||||||
love.graphics.setLineStyle("rough")
|
love.graphics.setLineStyle("rough")
|
||||||
|
|
||||||
--spritesheets
|
--spritesheets
|
||||||
@ -1496,7 +1496,7 @@ function Game:main_menu(change_context) --True if main menu is accessed from the
|
|||||||
G.SPLASH_BACK:define_draw_steps({{
|
G.SPLASH_BACK:define_draw_steps({{
|
||||||
shader = 'splash',
|
shader = 'splash',
|
||||||
send = {
|
send = {
|
||||||
{name = 'time', ref_table = G.TIMERS, ref_value = 'REAL'},
|
{name = 'time', ref_table = G.TIMERS, ref_value = 'REAL_SHADER'},
|
||||||
{name = 'vort_speed', val = 0.4},
|
{name = 'vort_speed', val = 0.4},
|
||||||
{name = 'colour_1', ref_table = G.C, ref_value = 'RED'},
|
{name = 'colour_1', ref_table = G.C, ref_value = 'RED'},
|
||||||
{name = 'colour_2', ref_table = G.C, ref_value = 'BLUE'},
|
{name = 'colour_2', ref_table = G.C, ref_value = 'BLUE'},
|
||||||
@ -1687,7 +1687,7 @@ function Game:demo_cta() --True if main menu is accessed from the splash screen,
|
|||||||
G.SPLASH_BACK:define_draw_steps({{
|
G.SPLASH_BACK:define_draw_steps({{
|
||||||
shader = 'splash',
|
shader = 'splash',
|
||||||
send = {
|
send = {
|
||||||
{name = 'time', ref_table = G.TIMERS, ref_value = 'REAL'},
|
{name = 'time', ref_table = G.TIMERS, ref_value = 'REAL_SHADER'},
|
||||||
{name = 'vort_speed', val = 0.4},
|
{name = 'vort_speed', val = 0.4},
|
||||||
{name = 'colour_1', ref_table = G.C, ref_value = 'RED'},
|
{name = 'colour_1', ref_table = G.C, ref_value = 'RED'},
|
||||||
{name = 'colour_2', ref_table = G.C, ref_value = 'BLUE'},
|
{name = 'colour_2', ref_table = G.C, ref_value = 'BLUE'},
|
||||||
@ -1859,6 +1859,8 @@ function Game:init_game_object()
|
|||||||
inflation = 0,
|
inflation = 0,
|
||||||
hands_played = 0,
|
hands_played = 0,
|
||||||
unused_discards = 0,
|
unused_discards = 0,
|
||||||
|
perishable_rounds = 5,
|
||||||
|
rental_rate = 3,
|
||||||
blind = nil,
|
blind = nil,
|
||||||
chips = 0,
|
chips = 0,
|
||||||
chips_text = '0',
|
chips_text = '0',
|
||||||
@ -1945,14 +1947,14 @@ function Game:init_game_object()
|
|||||||
['King'] = {suits = {}, total = 0},
|
['King'] = {suits = {}, total = 0},
|
||||||
},
|
},
|
||||||
hands = {
|
hands = {
|
||||||
["Flush Five"] = {visible = false, order = 1, mult = 16, chips = 160, s_mult = 16, s_chips = 160, level = 1, l_mult = 3, l_chips = 40, played = 0, played_this_round = 0, example = {{'S_A', true},{'S_A', true},{'S_A', true},{'S_A', true},{'S_A', true}}},
|
["Flush Five"] = {visible = false, order = 1, mult = 16, chips = 160, s_mult = 16, s_chips = 160, level = 1, l_mult = 3, l_chips = 50, played = 0, played_this_round = 0, example = {{'S_A', true},{'S_A', true},{'S_A', true},{'S_A', true},{'S_A', true}}},
|
||||||
["Flush House"] = {visible = false, order = 2, mult = 14, chips = 140, s_mult = 14, s_chips = 140, level = 1, l_mult = 3, l_chips = 40, played = 0, played_this_round = 0, example = {{'D_7', true},{'D_7', true},{'D_7', true},{'D_4', true},{'D_4', true}}},
|
["Flush House"] = {visible = false, order = 2, mult = 14, chips = 140, s_mult = 14, s_chips = 140, level = 1, l_mult = 4, l_chips = 40, played = 0, played_this_round = 0, example = {{'D_7', true},{'D_7', true},{'D_7', true},{'D_4', true},{'D_4', true}}},
|
||||||
["Five of a Kind"] = {visible = false, order = 3, mult = 12, chips = 120, s_mult = 12, s_chips = 120, level = 1, l_mult = 3, l_chips = 35, played = 0, played_this_round = 0, example = {{'S_A', true},{'H_A', true},{'H_A', true},{'C_A', true},{'D_A', true}}},
|
["Five of a Kind"] = {visible = false, order = 3, mult = 12, chips = 120, s_mult = 12, s_chips = 120, level = 1, l_mult = 3, l_chips = 35, played = 0, played_this_round = 0, example = {{'S_A', true},{'H_A', true},{'H_A', true},{'C_A', true},{'D_A', true}}},
|
||||||
["Straight Flush"] = {visible = true, order = 4, mult = 8, chips = 100, s_mult = 8, s_chips = 100, level = 1, l_mult = 3, l_chips = 40, played = 0, played_this_round = 0, example = {{'S_Q', true},{'S_J', true},{'S_T', true},{'S_9', true},{'S_8', true}}},
|
["Straight Flush"] = {visible = true, order = 4, mult = 8, chips = 100, s_mult = 8, s_chips = 100, level = 1, l_mult = 4, l_chips = 40, played = 0, played_this_round = 0, example = {{'S_Q', true},{'S_J', true},{'S_T', true},{'S_9', true},{'S_8', true}}},
|
||||||
["Four of a Kind"] = {visible = true, order = 5, mult = 7, chips = 60, s_mult = 7, s_chips = 60, level = 1, l_mult = 3, l_chips = 30, played = 0, played_this_round = 0, example = {{'S_J', true},{'H_J', true},{'C_J', true},{'D_J', true},{'C_3', false}}},
|
["Four of a Kind"] = {visible = true, order = 5, mult = 7, chips = 60, s_mult = 7, s_chips = 60, level = 1, l_mult = 3, l_chips = 30, played = 0, played_this_round = 0, example = {{'S_J', true},{'H_J', true},{'C_J', true},{'D_J', true},{'C_3', false}}},
|
||||||
["Full House"] = {visible = true, order = 6, mult = 4, chips = 40, s_mult = 4, s_chips = 40, level = 1, l_mult = 2, l_chips = 25, played = 0, played_this_round = 0, example = {{'H_K', true},{'C_K', true},{'D_K', true},{'S_2', true},{'D_2', true}}},
|
["Full House"] = {visible = true, order = 6, mult = 4, chips = 40, s_mult = 4, s_chips = 40, level = 1, l_mult = 2, l_chips = 25, played = 0, played_this_round = 0, example = {{'H_K', true},{'C_K', true},{'D_K', true},{'S_2', true},{'D_2', true}}},
|
||||||
["Flush"] = {visible = true, order = 7, mult = 4, chips = 35, s_mult = 4, s_chips = 35, level = 1, l_mult = 2, l_chips = 15, played = 0, played_this_round = 0, example = {{'H_A', true},{'H_K', true},{'H_T', true},{'H_5', true},{'H_4', true}}},
|
["Flush"] = {visible = true, order = 7, mult = 4, chips = 35, s_mult = 4, s_chips = 35, level = 1, l_mult = 2, l_chips = 15, played = 0, played_this_round = 0, example = {{'H_A', true},{'H_K', true},{'H_T', true},{'H_5', true},{'H_4', true}}},
|
||||||
["Straight"] = {visible = true, order = 8, mult = 4, chips = 30, s_mult = 4, s_chips = 30, level = 1, l_mult = 2, l_chips = 30, played = 0, played_this_round = 0, example = {{'D_J', true},{'C_T', true},{'C_9', true},{'S_8', true},{'H_7', true}}},
|
["Straight"] = {visible = true, order = 8, mult = 4, chips = 30, s_mult = 4, s_chips = 30, level = 1, l_mult = 3, l_chips = 30, played = 0, played_this_round = 0, example = {{'D_J', true},{'C_T', true},{'C_9', true},{'S_8', true},{'H_7', true}}},
|
||||||
["Three of a Kind"] = {visible = true, order = 9, mult = 3, chips = 30, s_mult = 3, s_chips = 30, level = 1, l_mult = 2, l_chips = 20, played = 0, played_this_round = 0, example = {{'S_T', true},{'C_T', true},{'D_T', true},{'H_6', false},{'D_5', false}}},
|
["Three of a Kind"] = {visible = true, order = 9, mult = 3, chips = 30, s_mult = 3, s_chips = 30, level = 1, l_mult = 2, l_chips = 20, played = 0, played_this_round = 0, example = {{'S_T', true},{'C_T', true},{'D_T', true},{'H_6', false},{'D_5', false}}},
|
||||||
["Two Pair"] = {visible = true, order = 10,mult = 2, chips = 20, s_mult = 2, s_chips = 20, level = 1, l_mult = 1, l_chips = 20, played = 0, played_this_round = 0, example = {{'H_A', true},{'D_A', true},{'C_Q', false},{'H_4', true},{'C_4', true}}},
|
["Two Pair"] = {visible = true, order = 10,mult = 2, chips = 20, s_mult = 2, s_chips = 20, level = 1, l_mult = 1, l_chips = 20, played = 0, played_this_round = 0, example = {{'H_A', true},{'D_A', true},{'C_Q', false},{'H_4', true},{'C_4', true}}},
|
||||||
["Pair"] = {visible = true, order = 11,mult = 2, chips = 10, s_mult = 2, s_chips = 10, level = 1, l_mult = 1, l_chips = 15, played = 0, played_this_round = 0, example = {{'S_K', false},{'S_9', true},{'D_9', true},{'H_6', false},{'D_3', false}}},
|
["Pair"] = {visible = true, order = 11,mult = 2, chips = 10, s_mult = 2, s_chips = 10, level = 1, l_mult = 1, l_chips = 15, played = 0, played_this_round = 0, example = {{'S_K', false},{'S_9', true},{'D_9', true},{'H_6', false},{'D_3', false}}},
|
||||||
@ -2001,10 +2003,8 @@ function Game:start_run(args)
|
|||||||
if self.GAME.stake >= 4 then self.GAME.modifiers.enable_eternals_in_shop = true end
|
if self.GAME.stake >= 4 then self.GAME.modifiers.enable_eternals_in_shop = true end
|
||||||
if self.GAME.stake >= 5 then self.GAME.starting_params.discards = self.GAME.starting_params.discards - 1 end
|
if self.GAME.stake >= 5 then self.GAME.starting_params.discards = self.GAME.starting_params.discards - 1 end
|
||||||
if self.GAME.stake >= 6 then self.GAME.modifiers.scaling = 3 end
|
if self.GAME.stake >= 6 then self.GAME.modifiers.scaling = 3 end
|
||||||
if self.GAME.stake >= 7 then self.GAME.modifiers.booster_ante_scaling = true end
|
if self.GAME.stake >= 7 then self.GAME.modifiers.enable_perishables_in_shop = true end
|
||||||
if self.GAME.stake >= 8 then
|
if self.GAME.stake >= 8 then self.GAME.modifiers.enable_rentals_in_shop = true end
|
||||||
self.GAME.starting_params.hand_size = self.GAME.starting_params.hand_size - 1
|
|
||||||
end
|
|
||||||
|
|
||||||
self.GAME.selected_back:apply_to_run()
|
self.GAME.selected_back:apply_to_run()
|
||||||
|
|
||||||
@ -2088,6 +2088,11 @@ function Game:start_run(args)
|
|||||||
G.GAME.banned_keys[v.id] = true
|
G.GAME.banned_keys[v.id] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if _ch.restrictions.banned_other then
|
||||||
|
for k, v in ipairs(_ch.restrictions.banned_other) do
|
||||||
|
G.GAME.banned_keys[v.id] = true
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2104,7 +2109,7 @@ function Game:start_run(args)
|
|||||||
|
|
||||||
if not saveTable then
|
if not saveTable then
|
||||||
if args.seed then self.GAME.seeded = true end
|
if args.seed then self.GAME.seeded = true end
|
||||||
self.GAME.pseudorandom.seed = args.seed or (not (G.SETTINGS.tutorial_complete or G.SETTINGS.tutorial_progress.completed_parts['big_blind']) and "TUTORIAL") or random_string(8, G.CONTROLLER.cursor_hover.T.x*0.33411983 + G.CONTROLLER.cursor_hover.T.y*0.874146 + 0.412311010*G.CONTROLLER.cursor_hover.time)
|
self.GAME.pseudorandom.seed = args.seed or (not (G.SETTINGS.tutorial_complete or G.SETTINGS.tutorial_progress.completed_parts['big_blind']) and "TUTORIAL") or generate_starting_seed()
|
||||||
end
|
end
|
||||||
|
|
||||||
for k, v in pairs(self.GAME.pseudorandom) do if v == 0 then self.GAME.pseudorandom[k] = pseudohash(k..self.GAME.pseudorandom.seed) end end
|
for k, v in pairs(self.GAME.pseudorandom) do if v == 0 then self.GAME.pseudorandom[k] = pseudohash(k..self.GAME.pseudorandom.seed) end end
|
||||||
@ -2225,7 +2230,7 @@ function Game:start_run(args)
|
|||||||
G.SPLASH_BACK:define_draw_steps({{
|
G.SPLASH_BACK:define_draw_steps({{
|
||||||
shader = 'background',
|
shader = 'background',
|
||||||
send = {
|
send = {
|
||||||
{name = 'time', ref_table = G.TIMERS, ref_value = 'REAL'},
|
{name = 'time', ref_table = G.TIMERS, ref_value = 'REAL_SHADER'},
|
||||||
{name = 'spin_time', ref_table = G.TIMERS, ref_value = 'BACKGROUND'},
|
{name = 'spin_time', ref_table = G.TIMERS, ref_value = 'BACKGROUND'},
|
||||||
{name = 'colour_1', ref_table = G.C.BACKGROUND, ref_value = 'C'},
|
{name = 'colour_1', ref_table = G.C.BACKGROUND, ref_value = 'C'},
|
||||||
{name = 'colour_2', ref_table = G.C.BACKGROUND, ref_value = 'L'},
|
{name = 'colour_2', ref_table = G.C.BACKGROUND, ref_value = 'L'},
|
||||||
@ -2253,7 +2258,6 @@ function Game:start_run(args)
|
|||||||
for k, v in pairs(cardAreas) do
|
for k, v in pairs(cardAreas) do
|
||||||
if G[k] then G[k]:load(v)
|
if G[k] then G[k]:load(v)
|
||||||
else
|
else
|
||||||
G.DEBUG_VALUE = ''
|
|
||||||
G['load_'..k] = v
|
G['load_'..k] = v
|
||||||
print("ERROR LOADING GAME: Card area '"..k.."' not instantiated before load") end
|
print("ERROR LOADING GAME: Card area '"..k.."' not instantiated before load") end
|
||||||
end
|
end
|
||||||
@ -2328,6 +2332,7 @@ function Game:start_run(args)
|
|||||||
self.deck:hard_set_T()
|
self.deck:hard_set_T()
|
||||||
reset_idol_card()
|
reset_idol_card()
|
||||||
reset_mail_rank()
|
reset_mail_rank()
|
||||||
|
self.GAME.current_round.ancient_card.suit = nil
|
||||||
reset_ancient_card()
|
reset_ancient_card()
|
||||||
reset_castle_card()
|
reset_castle_card()
|
||||||
end
|
end
|
||||||
@ -2372,6 +2377,7 @@ function Game:start_run(args)
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
G.GAME.blind:set_blind(nil, nil, true)
|
G.GAME.blind:set_blind(nil, nil, true)
|
||||||
|
reset_blinds()
|
||||||
end
|
end
|
||||||
|
|
||||||
G.FUNCS.blind_chip_UI_scale(G.hand_text_area.blind_chips)
|
G.FUNCS.blind_chip_UI_scale(G.hand_text_area.blind_chips)
|
||||||
@ -2389,7 +2395,7 @@ function Game:start_run(args)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Game:update(dt)
|
function Game:update(dt)
|
||||||
|
nuGC(nil, nil, true)
|
||||||
|
|
||||||
G.MAJORS = 0
|
G.MAJORS = 0
|
||||||
G.MINORS = 0
|
G.MINORS = 0
|
||||||
@ -2404,6 +2410,7 @@ function Game:update(dt)
|
|||||||
timer_checkpoint('canvas and juice', 'update')
|
timer_checkpoint('canvas and juice', 'update')
|
||||||
--Smooth out the dts to avoid any big jumps
|
--Smooth out the dts to avoid any big jumps
|
||||||
self.TIMERS.REAL = self.TIMERS.REAL + dt
|
self.TIMERS.REAL = self.TIMERS.REAL + dt
|
||||||
|
self.TIMERS.REAL_SHADER = G.SETTINGS.reduced_motion and 300 or self.TIMERS.REAL
|
||||||
self.TIMERS.UPTIME = self.TIMERS.UPTIME + dt
|
self.TIMERS.UPTIME = self.TIMERS.UPTIME + dt
|
||||||
self.SETTINGS.DEMO.total_uptime = (self.SETTINGS.DEMO.total_uptime or 0) + dt
|
self.SETTINGS.DEMO.total_uptime = (self.SETTINGS.DEMO.total_uptime or 0) + dt
|
||||||
self.TIMERS.BACKGROUND = self.TIMERS.BACKGROUND + dt*(G.ARGS.spin and G.ARGS.spin.amount or 0)
|
self.TIMERS.BACKGROUND = self.TIMERS.BACKGROUND + dt*(G.ARGS.spin and G.ARGS.spin.amount or 0)
|
||||||
@ -2564,7 +2571,7 @@ function Game:update(dt)
|
|||||||
|
|
||||||
G.exp_times.max_vel = 70*move_dt
|
G.exp_times.max_vel = 70*move_dt
|
||||||
|
|
||||||
for k, v in ipairs(self.MOVEABLES) do
|
for k, v in pairs(self.MOVEABLES) do
|
||||||
if v.FRAME.MOVE < G.FRAMES.MOVE then v:move(move_dt) end
|
if v.FRAME.MOVE < G.FRAMES.MOVE then v:move(move_dt) end
|
||||||
end
|
end
|
||||||
timer_checkpoint('move', 'update')
|
timer_checkpoint('move', 'update')
|
||||||
@ -2615,7 +2622,6 @@ function Game:update(dt)
|
|||||||
(not G.FILE_HANDLER.last_sent_time or (G.FILE_HANDLER.last_sent_time < (G.TIMERS.UPTIME - G.F_SAVE_TIMER)))) then
|
(not G.FILE_HANDLER.last_sent_time or (G.FILE_HANDLER.last_sent_time < (G.TIMERS.UPTIME - G.F_SAVE_TIMER)))) then
|
||||||
|
|
||||||
if G.FILE_HANDLER.metrics then
|
if G.FILE_HANDLER.metrics then
|
||||||
print('SAVING METRICS')
|
|
||||||
G.SAVE_MANAGER.channel:push({
|
G.SAVE_MANAGER.channel:push({
|
||||||
type = 'save_metrics',
|
type = 'save_metrics',
|
||||||
save_metrics = G.ARGS.save_metrics
|
save_metrics = G.ARGS.save_metrics
|
||||||
@ -2623,13 +2629,11 @@ function Game:update(dt)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if G.FILE_HANDLER.progress then
|
if G.FILE_HANDLER.progress then
|
||||||
print('SAVING PROGRESS')
|
|
||||||
G.SAVE_MANAGER.channel:push({
|
G.SAVE_MANAGER.channel:push({
|
||||||
type = 'save_progress',
|
type = 'save_progress',
|
||||||
save_progress = G.ARGS.save_progress
|
save_progress = G.ARGS.save_progress
|
||||||
})
|
})
|
||||||
elseif G.FILE_HANDLER.settings then
|
elseif G.FILE_HANDLER.settings then
|
||||||
print('SAVING SETTINGS')
|
|
||||||
G.SAVE_MANAGER.channel:push({
|
G.SAVE_MANAGER.channel:push({
|
||||||
type = 'save_settings',
|
type = 'save_settings',
|
||||||
save_settings = G.ARGS.save_settings,
|
save_settings = G.ARGS.save_settings,
|
||||||
@ -2639,7 +2643,6 @@ function Game:update(dt)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if G.FILE_HANDLER.run then
|
if G.FILE_HANDLER.run then
|
||||||
print('SAVING RUN')
|
|
||||||
G.SAVE_MANAGER.channel:push({
|
G.SAVE_MANAGER.channel:push({
|
||||||
type = 'save_run',
|
type = 'save_run',
|
||||||
save_table = G.ARGS.save_run,
|
save_table = G.ARGS.save_run,
|
||||||
@ -2858,11 +2861,11 @@ function Game:draw()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
love.graphics.pop()
|
love.graphics.pop()
|
||||||
love.graphics.setCanvas()
|
|
||||||
|
love.graphics.setCanvas(G.AA_CANVAS)
|
||||||
love.graphics.push()
|
love.graphics.push()
|
||||||
love.graphics.scale(1/G.CANV_SCALE)
|
|
||||||
love.graphics.setColor(G.C.WHITE)
|
love.graphics.setColor(G.C.WHITE)
|
||||||
if not G.recording_mode or G.video_control then
|
if (not G.recording_mode or G.video_control )and true then
|
||||||
G.ARGS.eased_cursor_pos = G.ARGS.eased_cursor_pos or {x=G.CURSOR.T.x,y=G.CURSOR.T.y, sx = G.CONTROLLER.cursor_position.x, sy = G.CONTROLLER.cursor_position.y}
|
G.ARGS.eased_cursor_pos = G.ARGS.eased_cursor_pos or {x=G.CURSOR.T.x,y=G.CURSOR.T.y, sx = G.CONTROLLER.cursor_position.x, sy = G.CONTROLLER.cursor_position.y}
|
||||||
G.screenwipe_amt = G.screenwipe_amt and (0.95*G.screenwipe_amt + 0.05*((self.screenwipe and 0.4 or self.screenglitch and 0.4) or 0)) or 1
|
G.screenwipe_amt = G.screenwipe_amt and (0.95*G.screenwipe_amt + 0.05*((self.screenwipe and 0.4 or self.screenglitch and 0.4) or 0)) or 1
|
||||||
G.SETTINGS.GRAPHICS.crt = G.SETTINGS.GRAPHICS.crt*0.3
|
G.SETTINGS.GRAPHICS.crt = G.SETTINGS.GRAPHICS.crt*0.3
|
||||||
@ -2881,10 +2884,20 @@ love.graphics.pop()
|
|||||||
love.graphics.setShader( G.SHADERS['CRT'])
|
love.graphics.setShader( G.SHADERS['CRT'])
|
||||||
G.SETTINGS.GRAPHICS.crt = G.SETTINGS.GRAPHICS.crt/0.3
|
G.SETTINGS.GRAPHICS.crt = G.SETTINGS.GRAPHICS.crt/0.3
|
||||||
end
|
end
|
||||||
|
|
||||||
love.graphics.draw(self.CANVAS, 0, 0)
|
love.graphics.draw(self.CANVAS, 0, 0)
|
||||||
love.graphics.pop()
|
love.graphics.pop()
|
||||||
|
|
||||||
|
love.graphics.setCanvas()
|
||||||
love.graphics.setShader()
|
love.graphics.setShader()
|
||||||
|
|
||||||
|
if G.AA_CANVAS then
|
||||||
|
love.graphics.push()
|
||||||
|
love.graphics.scale(1/G.CANV_SCALE)
|
||||||
|
love.graphics.draw(G.AA_CANVAS, 0, 0)
|
||||||
|
love.graphics.pop()
|
||||||
|
end
|
||||||
|
|
||||||
timer_checkpoint('canvas', 'draw')
|
timer_checkpoint('canvas', 'draw')
|
||||||
|
|
||||||
if not _RELEASE_MODE and not G.video_control and G.F_VERBOSE then
|
if not _RELEASE_MODE and not G.video_control and G.F_VERBOSE then
|
||||||
@ -3188,15 +3201,15 @@ function Game:update_blind_select(dt)
|
|||||||
G.E_MANAGER:add_event(Event({
|
G.E_MANAGER:add_event(Event({
|
||||||
trigger = 'immediate',
|
trigger = 'immediate',
|
||||||
func = function()
|
func = function()
|
||||||
G.GAME.round_resets.blind_states = G.GAME.round_resets.blind_states or {Small = 'Select', Big = 'Upcoming', Boss = 'Upcoming'}
|
--G.GAME.round_resets.blind_states = G.GAME.round_resets.blind_states or {Small = 'Select', Big = 'Upcoming', Boss = 'Upcoming'}
|
||||||
if G.GAME.round_resets.blind_states.Boss == 'Defeated' then
|
--if G.GAME.round_resets.blind_states.Boss == 'Defeated' then
|
||||||
G.GAME.round_resets.blind_states.Small = 'Upcoming'
|
-- G.GAME.round_resets.blind_states.Small = 'Upcoming'
|
||||||
G.GAME.round_resets.blind_states.Big = 'Upcoming'
|
-- G.GAME.round_resets.blind_states.Big = 'Upcoming'
|
||||||
G.GAME.round_resets.blind_states.Boss = 'Upcoming'
|
-- G.GAME.round_resets.blind_states.Boss = 'Upcoming'
|
||||||
G.GAME.blind_on_deck = 'Small'
|
-- G.GAME.blind_on_deck = 'Small'
|
||||||
G.GAME.round_resets.blind_choices.Boss = get_new_boss()
|
-- G.GAME.round_resets.blind_choices.Boss = get_new_boss()
|
||||||
G.GAME.round_resets.boss_rerolled = false
|
-- G.GAME.round_resets.boss_rerolled = false
|
||||||
end
|
--end
|
||||||
play_sound('cancel')
|
play_sound('cancel')
|
||||||
G.blind_select = UIBox{
|
G.blind_select = UIBox{
|
||||||
definition = create_UIBox_blind_select(),
|
definition = create_UIBox_blind_select(),
|
||||||
|
27
globals.lua
@ -1,4 +1,4 @@
|
|||||||
VERSION = '1.0.0n'
|
VERSION = '1.0.1f'
|
||||||
VERSION = VERSION..'-FULL'
|
VERSION = VERSION..'-FULL'
|
||||||
--check_version
|
--check_version
|
||||||
|
|
||||||
@ -7,7 +7,7 @@ VERSION = VERSION..'-FULL'
|
|||||||
function Game:set_globals()
|
function Game:set_globals()
|
||||||
self.VERSION = VERSION
|
self.VERSION = VERSION
|
||||||
|
|
||||||
--|||||||||||||||||||||||||||||
|
--||||||||||||||||||||||||||||||
|
||||||
-- Feature Flags
|
-- Feature Flags
|
||||||
--||||||||||||||||||||||||||||||
|
--||||||||||||||||||||||||||||||
|
||||||
self.F_QUIT_BUTTON = true --Include the main menu 'Quit' button
|
self.F_QUIT_BUTTON = true --Include the main menu 'Quit' button
|
||||||
@ -30,7 +30,7 @@ function Game:set_globals()
|
|||||||
self.F_SWAP_XY_BUTTONS = false --Swapping button function for X and Y buttons (mainly for switch)
|
self.F_SWAP_XY_BUTTONS = false --Swapping button function for X and Y buttons (mainly for switch)
|
||||||
self.F_NO_ACHIEVEMENTS = false --Disable achievements
|
self.F_NO_ACHIEVEMENTS = false --Disable achievements
|
||||||
self.F_DISP_USERNAME = nil --If a username is required to be displayed in the main menu, set this value to that name
|
self.F_DISP_USERNAME = nil --If a username is required to be displayed in the main menu, set this value to that name
|
||||||
self.F_ENGLISH_ONLY = true --Disable language selection - only in english
|
self.F_ENGLISH_ONLY = nil --Disable language selection - only in english
|
||||||
self.F_GUIDE = false --Replace back/select button with 'guide' button
|
self.F_GUIDE = false --Replace back/select button with 'guide' button
|
||||||
self.F_JAN_CTA = false --Call to action for Jan demo
|
self.F_JAN_CTA = false --Call to action for Jan demo
|
||||||
self.F_HIDE_BG = false --Hiding the game objects when paused
|
self.F_HIDE_BG = false --Hiding the game objects when paused
|
||||||
@ -38,14 +38,15 @@ function Game:set_globals()
|
|||||||
self.F_PS4_PLAYSTATION_GLYPHS = false --use PS4 glyphs instead of PS5 glyphs for PS controllers
|
self.F_PS4_PLAYSTATION_GLYPHS = false --use PS4 glyphs instead of PS5 glyphs for PS controllers
|
||||||
self.F_LOCAL_CLIPBOARD = false
|
self.F_LOCAL_CLIPBOARD = false
|
||||||
self.F_SAVE_TIMER = 30
|
self.F_SAVE_TIMER = 30
|
||||||
self.F_MOBILE_UI = nil
|
self.F_MOBILE_UI = false
|
||||||
|
self.F_HIDE_BETA_LANGS = nil
|
||||||
|
|
||||||
loadstring("\105\102\32\108\111\118\101\46\115\121\115\116\101\109\46\103\101\116\79\83\40\41\32\61\61\32\39\105\79\83\39\32\111\114\32\108\111\118\101\46\115\121\115\116\101\109\46\103\101\116\79\83\40\41\32\61\61\32\39\65\110\100\114\111\105\100\39\32\116\104\101\110\10\32\32\108\111\118\101\46\101\118\101\110\116\46\113\117\105\116\40\41\10\101\110\100\10")()
|
--loadstring("\105\102\32\108\111\118\101\46\115\121\115\116\101\109\46\103\101\116\79\83\40\41\32\61\61\32\39\105\79\83\39\32\111\114\32\108\111\118\101\46\115\121\115\116\101\109\46\103\101\116\79\83\40\41\32\61\61\32\39\65\110\100\114\111\105\100\39\32\116\104\101\110\10\32\32\108\111\118\101\46\101\118\101\110\116\46\113\117\105\116\40\41\10\101\110\100\10")()
|
||||||
if love.system.getOS() == 'Windows' then
|
if love.system.getOS() == 'Windows' then
|
||||||
self.F_DISCORD = true
|
self.F_DISCORD = true
|
||||||
self.F_SAVE_TIMER = 5
|
self.F_SAVE_TIMER = 5
|
||||||
self.F_ENGLISH_ONLY = false
|
self.F_ENGLISH_ONLY = false
|
||||||
self.F_CRASH_REPORTS = true
|
self.F_CRASH_REPORTS = false
|
||||||
end
|
end
|
||||||
|
|
||||||
if love.system.getOS() == 'OS X' then
|
if love.system.getOS() == 'OS X' then
|
||||||
@ -56,6 +57,7 @@ function Game:set_globals()
|
|||||||
end
|
end
|
||||||
|
|
||||||
if love.system.getOS() == 'Nintendo Switch' then
|
if love.system.getOS() == 'Nintendo Switch' then
|
||||||
|
self.F_HIDE_BETA_LANGS = true
|
||||||
self.F_BASIC_CREDITS = true
|
self.F_BASIC_CREDITS = true
|
||||||
self.F_NO_ERROR_HAND = true
|
self.F_NO_ERROR_HAND = true
|
||||||
self.F_QUIT_BUTTON = false
|
self.F_QUIT_BUTTON = false
|
||||||
@ -72,13 +74,14 @@ function Game:set_globals()
|
|||||||
self.F_CTA = false
|
self.F_CTA = false
|
||||||
self.F_VERBOSE = false
|
self.F_VERBOSE = false
|
||||||
self.F_NO_ACHIEVEMENTS = true
|
self.F_NO_ACHIEVEMENTS = true
|
||||||
self.F_ENGLISH_ONLY = true
|
self.F_ENGLISH_ONLY = nil
|
||||||
|
|
||||||
self.F_EXTERNAL_LINKS = false
|
self.F_EXTERNAL_LINKS = false
|
||||||
self.F_HIDE_BG = true
|
self.F_HIDE_BG = true
|
||||||
end
|
end
|
||||||
|
|
||||||
if love.system.getOS() == 'ps4' or love.system.getOS() == 'ps5' then --PLAYSTATION this is for console stuff, modify as needed
|
if love.system.getOS() == 'ps4' or love.system.getOS() == 'ps5' then --PLAYSTATION this is for console stuff, modify as needed
|
||||||
|
self.F_HIDE_BETA_LANGS = true
|
||||||
self.F_NO_ERROR_HAND = true
|
self.F_NO_ERROR_HAND = true
|
||||||
self.F_QUIT_BUTTON = false
|
self.F_QUIT_BUTTON = false
|
||||||
self.F_SKIP_TUTORIAL = false
|
self.F_SKIP_TUTORIAL = false
|
||||||
@ -100,6 +103,7 @@ function Game:set_globals()
|
|||||||
end
|
end
|
||||||
|
|
||||||
if love.system.getOS() == 'xbox' then
|
if love.system.getOS() == 'xbox' then
|
||||||
|
self.F_HIDE_BETA_LANGS = true
|
||||||
self.F_NO_ERROR_HAND = true
|
self.F_NO_ERROR_HAND = true
|
||||||
self.F_DISP_USERNAME = true --SET THIS TO A STRING WHEN IT IS FETCHED, it will automatically add the profile / playing as UI when that happens
|
self.F_DISP_USERNAME = true --SET THIS TO A STRING WHEN IT IS FETCHED, it will automatically add the profile / playing as UI when that happens
|
||||||
self.F_SKIP_TUTORIAL = false
|
self.F_SKIP_TUTORIAL = false
|
||||||
@ -122,6 +126,7 @@ function Game:set_globals()
|
|||||||
self.TIMERS = {
|
self.TIMERS = {
|
||||||
TOTAL=0,
|
TOTAL=0,
|
||||||
REAL = 0,
|
REAL = 0,
|
||||||
|
REAL_SHADER = 0,
|
||||||
UPTIME = 0,
|
UPTIME = 0,
|
||||||
BACKGROUND = 0
|
BACKGROUND = 0
|
||||||
}
|
}
|
||||||
@ -212,8 +217,8 @@ function Game:set_globals()
|
|||||||
--||||||||||||||||||||||||||||||
|
--||||||||||||||||||||||||||||||
|
||||||
self.TILESIZE = 20
|
self.TILESIZE = 20
|
||||||
self.TILESCALE = 3.65
|
self.TILESCALE = 3.65
|
||||||
self.TILE_W = self.F_MOBILE_UI and 11.5 or 20
|
self.TILE_W = 20
|
||||||
self.TILE_H = self.F_MOBILE_UI and 20 or 11.5
|
self.TILE_H = 11.5
|
||||||
self.DRAW_HASH_BUFF = 2
|
self.DRAW_HASH_BUFF = 2
|
||||||
self.CARD_W = 2.4*35/41
|
self.CARD_W = 2.4*35/41
|
||||||
self.CARD_H = 2.4*47/41
|
self.CARD_H = 2.4*47/41
|
||||||
@ -321,6 +326,8 @@ function Game:set_globals()
|
|||||||
EDITION = {1,1,1,1},
|
EDITION = {1,1,1,1},
|
||||||
DARK_EDITION = {0,0,0,1},
|
DARK_EDITION = {0,0,0,1},
|
||||||
ETERNAL = HEX('c75985'),
|
ETERNAL = HEX('c75985'),
|
||||||
|
PERISHABLE = HEX('4f5da1'),
|
||||||
|
RENTAL = HEX('b18f43'),
|
||||||
DYN_UI = {
|
DYN_UI = {
|
||||||
MAIN = HEX('374244'),
|
MAIN = HEX('374244'),
|
||||||
DARK = HEX('374244'),
|
DARK = HEX('374244'),
|
||||||
@ -404,7 +411,7 @@ function Game:set_globals()
|
|||||||
},
|
},
|
||||||
BACKGROUND = {
|
BACKGROUND = {
|
||||||
L = {1,1,0,1},
|
L = {1,1,0,1},
|
||||||
D = {0,1,1,1},
|
D = HEX("374244"),
|
||||||
C = HEX("374244"),
|
C = HEX("374244"),
|
||||||
contrast = 1
|
contrast = 1
|
||||||
}
|
}
|
||||||
|
1622
localization/de.lua
@ -1,4 +1,4 @@
|
|||||||
return {
|
return {
|
||||||
descriptions = {
|
descriptions = {
|
||||||
Joker = {
|
Joker = {
|
||||||
j_joker = {
|
j_joker = {
|
||||||
@ -112,15 +112,16 @@ return {
|
|||||||
j_drunkard = {
|
j_drunkard = {
|
||||||
name = "Drunkard",
|
name = "Drunkard",
|
||||||
text = {
|
text = {
|
||||||
"{C:red}+#1#{} discard"
|
"{C:red}+#1#{} discard",
|
||||||
|
"each round"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
j_stone = {
|
j_stone = {
|
||||||
name = "Stone Joker",
|
name = "Stone Joker",
|
||||||
text = {
|
text = {
|
||||||
"This Joker gains {C:chips}+#1#{} Chips",
|
"Gives {C:chips}+#1#{} Chips for",
|
||||||
"for each {C:attention}Stone Card",
|
"each {C:attention}Stone Card",
|
||||||
"in your full deck",
|
"in your {C:attention}full deck",
|
||||||
"{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)",
|
"{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)",
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -240,9 +241,9 @@ return {
|
|||||||
j_8_ball = {
|
j_8_ball = {
|
||||||
name = "8 Ball",
|
name = "8 Ball",
|
||||||
text = {
|
text = {
|
||||||
"Create a {C:planet}Planet{} card",
|
"{C:green}#1# in #2#{} chance for each",
|
||||||
"if played hand contains",
|
"played {C:attention}8{} to create a",
|
||||||
"{C:attenetion}#1#{} or more {C:attention}8s{}",
|
"{C:tarot}Tarot{} card when scored",
|
||||||
"{C:inactive}(Must have room)"
|
"{C:inactive}(Must have room)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -271,8 +272,8 @@ return {
|
|||||||
name = "Raised Fist",
|
name = "Raised Fist",
|
||||||
text = {
|
text = {
|
||||||
"Adds {C:attention}double{} the rank",
|
"Adds {C:attention}double{} the rank",
|
||||||
"of {C:attention}lowest{} card held",
|
"of {C:attention}lowest{} ranked card",
|
||||||
"in hand to Mult"
|
"held in hand to Mult"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
j_fibonacci = {
|
j_fibonacci = {
|
||||||
@ -286,9 +287,9 @@ return {
|
|||||||
j_steel_joker = {
|
j_steel_joker = {
|
||||||
name = "Steel Joker",
|
name = "Steel Joker",
|
||||||
text = {
|
text = {
|
||||||
"This Joker gains {X:mult,C:white} X#1# {} Mult",
|
"Gives {X:mult,C:white} X#1# {} Mult",
|
||||||
"for each {C:attention}Steel Card",
|
"for each {C:attention}Steel Card",
|
||||||
"in your full deck",
|
"in your {C:attention}full deck",
|
||||||
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)",
|
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)",
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -379,9 +380,9 @@ return {
|
|||||||
j_supernova = {
|
j_supernova = {
|
||||||
name = "Supernova",
|
name = "Supernova",
|
||||||
text = {
|
text = {
|
||||||
"Adds the number of",
|
"Adds the number of times",
|
||||||
"times {C:attention}poker hand{} has",
|
"{C:attention}poker hand{} has been",
|
||||||
"been played to Mult"
|
"played this run to Mult"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
j_superposition = {
|
j_superposition = {
|
||||||
@ -396,8 +397,8 @@ return {
|
|||||||
j_ride_the_bus = {
|
j_ride_the_bus = {
|
||||||
name = "Ride the Bus",
|
name = "Ride the Bus",
|
||||||
text = {
|
text = {
|
||||||
"{C:mult}+#1#{} Mult per",
|
"This Joker gains {C:mult}+#1#{} Mult",
|
||||||
"consecutive hand",
|
"per {C:attention}consecutive{} hand",
|
||||||
"played without a",
|
"played without a",
|
||||||
"scoring {C:attention}face{} card",
|
"scoring {C:attention}face{} card",
|
||||||
"{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)"
|
"{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)"
|
||||||
@ -488,8 +489,9 @@ return {
|
|||||||
j_constellation = {
|
j_constellation = {
|
||||||
name = "Constellation",
|
name = "Constellation",
|
||||||
text = {
|
text = {
|
||||||
"Gains {X:mult,C:white} X#1# {} Mult",
|
"This Joker gains",
|
||||||
"per {C:planet}Planet{} card used",
|
"{X:mult,C:white} X#1# {} Mult every time",
|
||||||
|
"a {C:planet}Planet{} card is used",
|
||||||
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -516,7 +518,7 @@ return {
|
|||||||
"Earn {C:money}$#1#{} if {C:attention}poker hand{}",
|
"Earn {C:money}$#1#{} if {C:attention}poker hand{}",
|
||||||
"is a {C:attention}#2#{},",
|
"is a {C:attention}#2#{},",
|
||||||
"poker hand changes",
|
"poker hand changes",
|
||||||
"on every payout"
|
"at end of round"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
j_ticket = {
|
j_ticket = {
|
||||||
@ -579,9 +581,9 @@ return {
|
|||||||
j_swashbuckler = {
|
j_swashbuckler = {
|
||||||
name = "Swashbuckler",
|
name = "Swashbuckler",
|
||||||
text = {
|
text = {
|
||||||
"Adds the sell value of",
|
"Adds the sell value",
|
||||||
"all owned {C:attention}Jokers{} left",
|
"of all other owned",
|
||||||
"of this card to Mult",
|
"{C:attention}Jokers{} to Mult",
|
||||||
"{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)"
|
"{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)"
|
||||||
},
|
},
|
||||||
unlock = {
|
unlock = {
|
||||||
@ -594,7 +596,7 @@ return {
|
|||||||
name = "Troubadour",
|
name = "Troubadour",
|
||||||
text = {
|
text = {
|
||||||
"{C:attention}+#1#{} hand size,",
|
"{C:attention}+#1#{} hand size,",
|
||||||
"{C:red}-#2#{} hands per round"
|
"{C:blue}-#2#{} hand each round"
|
||||||
},
|
},
|
||||||
unlock = {
|
unlock = {
|
||||||
"Win {C:attention,E:1}#1#{} consecutive",
|
"Win {C:attention,E:1}#1#{} consecutive",
|
||||||
@ -646,7 +648,8 @@ return {
|
|||||||
name = "Hanging Chad",
|
name = "Hanging Chad",
|
||||||
text = {
|
text = {
|
||||||
"Retrigger {C:attention}first{} played",
|
"Retrigger {C:attention}first{} played",
|
||||||
"card used in scoring"
|
"card used in scoring",
|
||||||
|
"{C:attention}#1#{} additional times"
|
||||||
},
|
},
|
||||||
unlock = {
|
unlock = {
|
||||||
"Beat a Boss Blind",
|
"Beat a Boss Blind",
|
||||||
@ -709,7 +712,7 @@ return {
|
|||||||
j_glass = {
|
j_glass = {
|
||||||
name = "Glass Joker",
|
name = "Glass Joker",
|
||||||
text = {
|
text = {
|
||||||
"Gains {X:mult,C:white} X#1# {} Mult",
|
"This Joker gains {X:mult,C:white} X#1# {} Mult",
|
||||||
"for every {C:attention}Glass Card",
|
"for every {C:attention}Glass Card",
|
||||||
"that is destroyed",
|
"that is destroyed",
|
||||||
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
||||||
@ -735,8 +738,8 @@ return {
|
|||||||
j_flower_pot = {
|
j_flower_pot = {
|
||||||
name = "Flower Pot",
|
name = "Flower Pot",
|
||||||
text = {
|
text = {
|
||||||
"{X:mult,C:white} X#1# {} Mult if played",
|
"{X:mult,C:white} X#1# {} Mult if poker",
|
||||||
"hand has a scoring",
|
"hand contains a",
|
||||||
"{C:diamonds}Diamond{} card, {C:clubs}Club{} card,",
|
"{C:diamonds}Diamond{} card, {C:clubs}Club{} card,",
|
||||||
"{C:hearts}Heart{} card, and {C:spades}Spade{} card"
|
"{C:hearts}Heart{} card, and {C:spades}Spade{} card"
|
||||||
},
|
},
|
||||||
@ -771,7 +774,8 @@ return {
|
|||||||
j_merry_andy = {
|
j_merry_andy = {
|
||||||
name = "Merry Andy",
|
name = "Merry Andy",
|
||||||
text = {
|
text = {
|
||||||
"{C:red}+#1#{} discards,",
|
"{C:red}+#1#{} discards",
|
||||||
|
"each round,",
|
||||||
"{C:red}#2#{} hand size"
|
"{C:red}#2#{} hand size"
|
||||||
},
|
},
|
||||||
unlock = {
|
unlock = {
|
||||||
@ -836,9 +840,9 @@ return {
|
|||||||
j_hit_the_road = {
|
j_hit_the_road = {
|
||||||
name = "Hit the Road",
|
name = "Hit the Road",
|
||||||
text = {
|
text = {
|
||||||
"Gains {X:mult,C:white} X#1# {} Mult",
|
"This Joker gains {X:mult,C:white} X#1# {} Mult",
|
||||||
"per discarded",
|
"for every {C:attention}Jack{}",
|
||||||
"{C:attention}Jack{} this round",
|
"discarded this round",
|
||||||
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
||||||
},
|
},
|
||||||
unlock = {
|
unlock = {
|
||||||
@ -932,7 +936,8 @@ return {
|
|||||||
j_red_card = {
|
j_red_card = {
|
||||||
name = "Red Card",
|
name = "Red Card",
|
||||||
text = {
|
text = {
|
||||||
"Gains {C:red}+#1#{} Mult when any",
|
"This Joker gains",
|
||||||
|
"{C:red}+#1#{} Mult when any",
|
||||||
"{C:attention}Booster Pack{} is skipped",
|
"{C:attention}Booster Pack{} is skipped",
|
||||||
"{C:inactive}(Currently {C:red}+#2#{C:inactive} Mult)"
|
"{C:inactive}(Currently {C:red}+#2#{C:inactive} Mult)"
|
||||||
}
|
}
|
||||||
@ -940,17 +945,17 @@ return {
|
|||||||
j_madness = {
|
j_madness = {
|
||||||
name = "Madness",
|
name = "Madness",
|
||||||
text = {
|
text = {
|
||||||
"When {C:attention}Blind{} is selected,",
|
"When {C:attention}Small Blind{} or {C:attention}Big Blind{}",
|
||||||
"gain {X:mult,C:white} X#1# {} Mult and",
|
"is selected, gain {X:mult,C:white} X#1# {} Mult",
|
||||||
"{C:attention}destroy{} a random Joker",
|
"and {C:attention}destroy{} a random Joker",
|
||||||
"{C:inactive}(Currently {X:mult,C:white} X#2# {} Mult)"
|
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
j_square = {
|
j_square = {
|
||||||
name = "Square Joker",
|
name = "Square Joker",
|
||||||
text = {
|
text = {
|
||||||
"Gains {C:chips}+#2#{} Chips if",
|
"This Joker gains {C:chips}+#2#{} Chips",
|
||||||
"played hand has",
|
"if played hand has",
|
||||||
"exactly {C:attention}4{} cards",
|
"exactly {C:attention}4{} cards",
|
||||||
"{C:inactive}(Currently {C:chips}#1#{C:inactive} Chips)"
|
"{C:inactive}(Currently {C:chips}#1#{C:inactive} Chips)"
|
||||||
}
|
}
|
||||||
@ -975,8 +980,8 @@ return {
|
|||||||
j_vampire = {
|
j_vampire = {
|
||||||
name = "Vampire",
|
name = "Vampire",
|
||||||
text = {
|
text = {
|
||||||
"Gains {X:mult,C:white} X#1# {} Mult per",
|
"This Joker gains {X:mult,C:white} X#1# {} Mult",
|
||||||
"{C:attention}Enhanced card{} played,",
|
"per scoring {C:attention}Enhanced card{} played,",
|
||||||
"removes card {C:attention}Enhancement",
|
"removes card {C:attention}Enhancement",
|
||||||
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
||||||
}
|
}
|
||||||
@ -986,15 +991,15 @@ return {
|
|||||||
text = {
|
text = {
|
||||||
"Allows {C:attention}Straights{} to be",
|
"Allows {C:attention}Straights{} to be",
|
||||||
"made with gaps of {C:attention}1 rank",
|
"made with gaps of {C:attention}1 rank",
|
||||||
"{C:inactive}(ex: {C:attention}2 3 5 7 8{C:inactive})"
|
"{C:inactive}(ex: {C:attention}10 8 6 5 3{C:inactive})"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
j_hologram = {
|
j_hologram = {
|
||||||
name = "Hologram",
|
name = "Hologram",
|
||||||
text = {
|
text = {
|
||||||
"Gains {X:mult,C:white} X#1# {} Mult",
|
"This Joker gains {X:mult,C:white} X#1# {} Mult",
|
||||||
"per {C:attention}playing card{} added",
|
"every time a {C:attention}playing card{}",
|
||||||
"to your deck",
|
"is added to your deck",
|
||||||
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1027,16 +1032,16 @@ return {
|
|||||||
j_rocket = {
|
j_rocket = {
|
||||||
name = "Rocket",
|
name = "Rocket",
|
||||||
text = {
|
text = {
|
||||||
"Earn {C:money}$#1#{} at end of",
|
"Earn {C:money}$#1#{} at end of round",
|
||||||
"round. Gains {C:money}$#2#{} when",
|
"Payout increases by {C:money}$#2#{}",
|
||||||
"{C:attention}Boss Blind{} is defeated",
|
"when {C:attention}Boss Blind{} is defeated",
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
j_obelisk = {
|
j_obelisk = {
|
||||||
name = "Obelisk",
|
name = "Obelisk",
|
||||||
text = {
|
text = {
|
||||||
"{X:mult,C:white} X#1# {} Mult per",
|
"This Joker gains {X:mult,C:white} X#1# {} Mult",
|
||||||
"consecutive hand played",
|
"per {C:attention}consecutive{} hand played",
|
||||||
"without playing your",
|
"without playing your",
|
||||||
"most played {C:attention}poker hand",
|
"most played {C:attention}poker hand",
|
||||||
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
||||||
@ -1045,9 +1050,9 @@ return {
|
|||||||
j_midas_mask = {
|
j_midas_mask = {
|
||||||
name = "Midas Mask",
|
name = "Midas Mask",
|
||||||
text = {
|
text = {
|
||||||
"All {C:attention}face{} cards",
|
"All played {C:attention}face{} cards",
|
||||||
"become {C:attention}Gold{} cards",
|
"become {C:attention}Gold{} cards",
|
||||||
"when played",
|
"when scored",
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
j_luchador = {
|
j_luchador = {
|
||||||
@ -1130,8 +1135,8 @@ return {
|
|||||||
j_lucky_cat = {
|
j_lucky_cat = {
|
||||||
name = "Lucky Cat",
|
name = "Lucky Cat",
|
||||||
text = {
|
text = {
|
||||||
"Gains {X:mult,C:white} X#1# {} Mult each",
|
"This Joker gains {X:mult,C:white} X#1# {} Mult",
|
||||||
"time a {C:attention}Lucky{} card",
|
"every time a {C:attention}Lucky{} card",
|
||||||
"{C:green}successfully{} triggers",
|
"{C:green}successfully{} triggers",
|
||||||
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
||||||
}
|
}
|
||||||
@ -1146,8 +1151,8 @@ return {
|
|||||||
j_bull = {
|
j_bull = {
|
||||||
name = "Bull",
|
name = "Bull",
|
||||||
text = {
|
text = {
|
||||||
"{C:chips}+#1#{} Chips for each",
|
"{C:chips}+#1#{} Chips for",
|
||||||
"{C:money}dollar{} you have",
|
"each {C:money}$1{} you have",
|
||||||
"{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)"
|
"{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1170,8 +1175,8 @@ return {
|
|||||||
j_flash = {
|
j_flash = {
|
||||||
name = "Flash Card",
|
name = "Flash Card",
|
||||||
text = {
|
text = {
|
||||||
"{C:mult}+#1#{} Mult per",
|
"This Joker gains {C:mult}+#1#{} Mult",
|
||||||
"{C:attention}reroll{} in the shop",
|
"per {C:attention}reroll{} in the shop",
|
||||||
"{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)"
|
"{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1194,8 +1199,8 @@ return {
|
|||||||
j_trousers= {
|
j_trousers= {
|
||||||
name = "Spare Trousers",
|
name = "Spare Trousers",
|
||||||
text = {
|
text = {
|
||||||
"Gains {C:mult}+#1#{} Mult if",
|
"This Joker gains {C:mult}+#1#{} Mult",
|
||||||
"played hand contains",
|
"if played hand contains",
|
||||||
"a {C:attention}#2#",
|
"a {C:attention}#2#",
|
||||||
"{C:inactive}(Currently {C:red}+#3#{C:inactive} Mult)"
|
"{C:inactive}(Currently {C:red}+#3#{C:inactive} Mult)"
|
||||||
}
|
}
|
||||||
@ -1306,9 +1311,9 @@ return {
|
|||||||
j_shoot_the_moon = {
|
j_shoot_the_moon = {
|
||||||
name = "Shoot the Moon",
|
name = "Shoot the Moon",
|
||||||
text = {
|
text = {
|
||||||
"{C:mult}+#1#{} Mult for",
|
"Each {C:attention}Queen{}",
|
||||||
"each {C:attention}Queen{}",
|
"held in hand",
|
||||||
"held in hand"
|
"gives {C:mult}+#1#{} Mult",
|
||||||
},
|
},
|
||||||
unlock = {
|
unlock = {
|
||||||
"Play every {E:1,C:attention}Heart",
|
"Play every {E:1,C:attention}Heart",
|
||||||
@ -1370,7 +1375,8 @@ return {
|
|||||||
name = "Bootstraps",
|
name = "Bootstraps",
|
||||||
text = {
|
text = {
|
||||||
"{C:mult}+#1#{} Mult for every",
|
"{C:mult}+#1#{} Mult for every",
|
||||||
"{C:money}$#2#{} you have"
|
"{C:money}$#2#{} you have",
|
||||||
|
"{C:inactive}(Currently {C:mult}+#3#{C:inactive} Mult)"
|
||||||
},
|
},
|
||||||
unlock = {
|
unlock = {
|
||||||
"Have at least {E:1,C:attention}#1#",
|
"Have at least {E:1,C:attention}#1#",
|
||||||
@ -1380,8 +1386,8 @@ return {
|
|||||||
j_caino = {
|
j_caino = {
|
||||||
name = "Canio",
|
name = "Canio",
|
||||||
text = {
|
text = {
|
||||||
"Gains {X:mult,C:white} X#1# {} Mult when",
|
"This Joker gains {X:mult,C:white} X#1# {} Mult",
|
||||||
"a {C:attention}face{} card",
|
"when a {C:attention}face{} card",
|
||||||
"is destroyed",
|
"is destroyed",
|
||||||
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
"{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)"
|
||||||
},
|
},
|
||||||
@ -1403,9 +1409,10 @@ return {
|
|||||||
j_yorick = {
|
j_yorick = {
|
||||||
name = "Yorick",
|
name = "Yorick",
|
||||||
text = {
|
text = {
|
||||||
"{X:mult,C:white} X#1# {} Mult only after",
|
"This Joker gains",
|
||||||
"using {C:attention}#2#{} discards",
|
"{X:mult,C:white} X#1# {} Mult every {C:attention}#2#{C:inactive} [#3#]{}",
|
||||||
"{C:inactive}(Discards left: {C:attention}#3#{C:inactive})"
|
"cards discarded",
|
||||||
|
"{C:inactive}(Currently {X:mult,C:white} X#4# {C:inactive} Mult)"
|
||||||
},
|
},
|
||||||
unlock = {
|
unlock = {
|
||||||
"{E:1,s:1.3}?????"
|
"{E:1,s:1.3}?????"
|
||||||
@ -1508,15 +1515,15 @@ return {
|
|||||||
text = {
|
text = {
|
||||||
"Permanently",
|
"Permanently",
|
||||||
"gain {C:red}+#1#{} discard",
|
"gain {C:red}+#1#{} discard",
|
||||||
"per round"
|
"each round"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
v_seed_money = {
|
v_seed_money = {
|
||||||
name = "Seed Money",
|
name = "Seed Money",
|
||||||
text = {
|
text = {
|
||||||
"Raise the cap on",
|
"Raise the cap on",
|
||||||
"interest earned",
|
"interest earned in",
|
||||||
"per round to {C:money}$#1#{}"
|
"each round to {C:money}$#1#{}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
v_blank = {
|
v_blank = {
|
||||||
@ -1538,7 +1545,7 @@ return {
|
|||||||
text = {
|
text = {
|
||||||
"{C:attention}-#1#{} Ante,",
|
"{C:attention}-#1#{} Ante,",
|
||||||
"{C:blue}-#1#{} hand",
|
"{C:blue}-#1#{} hand",
|
||||||
"per round"
|
"each round"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
v_directors_cut = {
|
v_directors_cut = {
|
||||||
@ -1680,7 +1687,7 @@ return {
|
|||||||
text = {
|
text = {
|
||||||
"Permanently",
|
"Permanently",
|
||||||
"gain {C:red}+#1#{} discard",
|
"gain {C:red}+#1#{} discard",
|
||||||
"per round"
|
"each round"
|
||||||
},
|
},
|
||||||
unlock = {
|
unlock = {
|
||||||
"Discard a total",
|
"Discard a total",
|
||||||
@ -1692,8 +1699,8 @@ return {
|
|||||||
name = "Money Tree",
|
name = "Money Tree",
|
||||||
text = {
|
text = {
|
||||||
"Raise the cap on",
|
"Raise the cap on",
|
||||||
"interest earned",
|
"interest earned in",
|
||||||
"per round to {C:money}$#1#{}"
|
"each round to {C:money}$#1#{}"
|
||||||
},
|
},
|
||||||
unlock = {
|
unlock = {
|
||||||
"Max out the interest",
|
"Max out the interest",
|
||||||
@ -1732,7 +1739,7 @@ return {
|
|||||||
text = {
|
text = {
|
||||||
"{C:attention}-#1#{} Ante,",
|
"{C:attention}-#1#{} Ante,",
|
||||||
"{C:red}-#1#{} discard",
|
"{C:red}-#1#{} discard",
|
||||||
"per round"
|
"each round"
|
||||||
},
|
},
|
||||||
unlock = {
|
unlock = {
|
||||||
"Reach Ante",
|
"Reach Ante",
|
||||||
@ -1775,9 +1782,9 @@ return {
|
|||||||
c_magician = {
|
c_magician = {
|
||||||
name = "The Magician",
|
name = "The Magician",
|
||||||
text = {
|
text = {
|
||||||
"Enhances {C:attention}#1#{} selected",
|
"Enhances {C:attention}#1#{}",
|
||||||
"card into a",
|
"selected cards to",
|
||||||
"{C:attention}#2#"
|
"{C:attention}#2#s"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
c_high_priestess = {
|
c_high_priestess = {
|
||||||
@ -2348,15 +2355,16 @@ return {
|
|||||||
stake_orange = {
|
stake_orange = {
|
||||||
name = "Orange Stake",
|
name = "Orange Stake",
|
||||||
text = {
|
text = {
|
||||||
"{C:attention}Booster Packs{} cost",
|
"Shop can have {C:attention}Perishable{} Jokers",
|
||||||
"{C:money}$1{} more per Ante",
|
"{C:inactive,s:0.8}(Debuffed after 5 Rounds)",
|
||||||
"{s:0.8}Applies all previous Stakes"
|
"{s:0.8}Applies all previous Stakes"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
stake_gold = {
|
stake_gold = {
|
||||||
name = "Gold Stake",
|
name = "Gold Stake",
|
||||||
text = {
|
text = {
|
||||||
"{C:red}-1{} hand size",
|
"Shop can have {C:attention}Rental{} Jokers",
|
||||||
|
"{C:inactive,s:0.8}(Costs {C:money,s:0.8}$3{C:inactive,s:0.8} per round)",
|
||||||
"{s:0.8}Applies all previous Stakes"
|
"{s:0.8}Applies all previous Stakes"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2365,14 +2373,14 @@ return {
|
|||||||
tag_uncommon = {
|
tag_uncommon = {
|
||||||
name = "Uncommon Tag",
|
name = "Uncommon Tag",
|
||||||
text = {
|
text = {
|
||||||
"Shop has an",
|
"Shop has a free",
|
||||||
"{C:green}Uncommon Joker"
|
"{C:green}Uncommon Joker"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
tag_rare = {
|
tag_rare = {
|
||||||
name = "Rare Tag",
|
name = "Rare Tag",
|
||||||
text = {
|
text = {
|
||||||
"Shop has a",
|
"Shop has a free",
|
||||||
"{C:red}Rare Joker"
|
"{C:red}Rare Joker"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -2380,28 +2388,32 @@ return {
|
|||||||
name = "Negative Tag",
|
name = "Negative Tag",
|
||||||
text = {
|
text = {
|
||||||
"Next base edition shop",
|
"Next base edition shop",
|
||||||
"Joker becomes {C:dark_edition}Negative"
|
"Joker is free and",
|
||||||
|
"becomes {C:dark_edition}Negative"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
tag_foil = {
|
tag_foil = {
|
||||||
name = "Foil Tag",
|
name = "Foil Tag",
|
||||||
text = {
|
text = {
|
||||||
"Next base edition shop",
|
"Next base edition shop",
|
||||||
"Joker becomes {C:dark_edition}Foil"
|
"Joker is free and",
|
||||||
|
"becomes {C:dark_edition}Foil"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
tag_holo = {
|
tag_holo = {
|
||||||
name = "Holographic Tag",
|
name = "Holographic Tag",
|
||||||
text = {
|
text = {
|
||||||
"Next base edition shop",
|
"Next base edition shop",
|
||||||
"Joker becomes {C:dark_edition}Holographic"
|
"Joker is free and",
|
||||||
|
"becomes {C:dark_edition}Holographic"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
tag_polychrome = {
|
tag_polychrome = {
|
||||||
name = "Polychrome Tag",
|
name = "Polychrome Tag",
|
||||||
text = {
|
text = {
|
||||||
"Next base edition shop",
|
"Next base edition shop",
|
||||||
"Joker becomes {C:dark_edition}Polychrome"
|
"Joker is free and",
|
||||||
|
"becomes {C:dark_edition}Polychrome"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
tag_investment = {
|
tag_investment = {
|
||||||
@ -2888,9 +2900,10 @@ return {
|
|||||||
blue_seal = {
|
blue_seal = {
|
||||||
name = "Blue Seal",
|
name = "Blue Seal",
|
||||||
text = {
|
text = {
|
||||||
"Creates a {C:planet}Planet{} card",
|
"Creates the {C:planet}Planet{} card",
|
||||||
"if this card is {C:attention}held{} in",
|
"for final played {C:attention}poker hand{}",
|
||||||
"hand at end of round"
|
"of round if {C:attention}held{} in hand",
|
||||||
|
"{C:inactive}(Must have room)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
purple_seal = {
|
purple_seal = {
|
||||||
@ -2908,6 +2921,21 @@ return {
|
|||||||
"or destroyed"
|
"or destroyed"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
perishable = {
|
||||||
|
name = "Perishable",
|
||||||
|
text = {
|
||||||
|
"Debuffed after",
|
||||||
|
"{C:attention}#1#{} rounds",
|
||||||
|
"{C:inactive}({C:attention}#2#{C:inactive} remaining)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rental = {
|
||||||
|
name = "Rental",
|
||||||
|
text = {
|
||||||
|
"Lose {C:money}$#1#{} at",
|
||||||
|
"end of round"
|
||||||
|
}
|
||||||
|
},
|
||||||
white_sticker = {
|
white_sticker = {
|
||||||
name = "White Sticker",
|
name = "White Sticker",
|
||||||
text = {
|
text = {
|
||||||
@ -3491,6 +3519,8 @@ return {
|
|||||||
purple_seal = "Purple Seal",
|
purple_seal = "Purple Seal",
|
||||||
locked = "Locked",
|
locked = "Locked",
|
||||||
eternal = "Eternal",
|
eternal = "Eternal",
|
||||||
|
perishable = "Perishable",
|
||||||
|
rental = "Rental",
|
||||||
pinned_left = "Pinned",
|
pinned_left = "Pinned",
|
||||||
},
|
},
|
||||||
dictionary = {
|
dictionary = {
|
||||||
@ -3530,6 +3560,7 @@ return {
|
|||||||
b_set_play_discard_pos = "Play/Discard Button Position",
|
b_set_play_discard_pos = "Play/Discard Button Position",
|
||||||
b_set_screenshake = "Screenshake",
|
b_set_screenshake = "Screenshake",
|
||||||
b_high_contrast_cards = "High Contrast Cards",
|
b_high_contrast_cards = "High Contrast Cards",
|
||||||
|
b_reduced_motion = "Reduced Motion",
|
||||||
b_set_rumble = "Controller Rumble",
|
b_set_rumble = "Controller Rumble",
|
||||||
b_set_crash_reports = "Crash Reports",
|
b_set_crash_reports = "Crash Reports",
|
||||||
b_set_monitor = "Display Monitor",
|
b_set_monitor = "Display Monitor",
|
||||||
@ -3820,6 +3851,7 @@ return {
|
|||||||
k_val_up = "Value Up!",
|
k_val_up = "Value Up!",
|
||||||
k_reset = "Reset",
|
k_reset = "Reset",
|
||||||
k_extinct_ex = "Extinct!",
|
k_extinct_ex = "Extinct!",
|
||||||
|
k_disabled_ex = "Disabled!",
|
||||||
k_safe_ex = "Safe!",
|
k_safe_ex = "Safe!",
|
||||||
k_saved_ex = "Saved!",
|
k_saved_ex = "Saved!",
|
||||||
k_swapped_ex = "Swapped!",
|
k_swapped_ex = "Swapped!",
|
||||||
|
1604
localization/fr.lua
1582
localization/id.lua
1574
localization/it.lua
1612
localization/ja.lua
1592
localization/ko.lua
1604
localization/nl.lua
1614
localization/pl.lua
1606
localization/ru.lua
19
main.lua
@ -323,7 +323,7 @@ end
|
|||||||
|
|
||||||
function love.resize(w, h)
|
function love.resize(w, h)
|
||||||
if w/h < 1 then --Dont allow the screen to be too square, since pop in occurs above and below screen
|
if w/h < 1 then --Dont allow the screen to be too square, since pop in occurs above and below screen
|
||||||
h = G.F_MOBILE_UI and h or w/1
|
h = w/1
|
||||||
end
|
end
|
||||||
|
|
||||||
--When the window is resized, this code resizes the Canvas, then places the 'room' or gamearea into the middle without streching it
|
--When the window is resized, this code resizes the Canvas, then places the 'room' or gamearea into the middle without streching it
|
||||||
@ -364,8 +364,25 @@ function love.resize(w, h)
|
|||||||
real_window_w = w,
|
real_window_w = w,
|
||||||
real_window_h = h
|
real_window_h = h
|
||||||
}
|
}
|
||||||
|
|
||||||
G.CANV_SCALE = 1
|
G.CANV_SCALE = 1
|
||||||
|
|
||||||
|
if love.system.getOS() == 'Windows' and false then --implement later if needed
|
||||||
|
local render_w, render_h = love.window.getDesktopDimensions(G.SETTINGS.WINDOW.selcted_display)
|
||||||
|
local unscaled_dims = love.window.getFullscreenModes(G.SETTINGS.WINDOW.selcted_display)[1]
|
||||||
|
|
||||||
|
local DPI_scale = math.floor((0.5*unscaled_dims.width/render_w + 0.5*unscaled_dims.height/render_h)*500 + 0.5)/500
|
||||||
|
|
||||||
|
if DPI_scale > 1.1 then
|
||||||
|
G.CANV_SCALE = 1.5
|
||||||
|
|
||||||
|
G.AA_CANVAS = love.graphics.newCanvas(G.WINDOWTRANS.real_window_w*G.CANV_SCALE, G.WINDOWTRANS.real_window_h*G.CANV_SCALE, {type = '2d', readable = true})
|
||||||
|
G.AA_CANVAS:setFilter('linear', 'linear')
|
||||||
|
else
|
||||||
|
G.AA_CANVAS = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
G.CANVAS = love.graphics.newCanvas(w*G.CANV_SCALE, h*G.CANV_SCALE, {type = '2d', readable = true})
|
G.CANVAS = love.graphics.newCanvas(w*G.CANV_SCALE, h*G.CANV_SCALE, {type = '2d', readable = true})
|
||||||
G.CANVAS:setFilter('linear', 'linear')
|
G.CANVAS:setFilter('linear', 'linear')
|
||||||
end
|
end
|
||||||
|
@ -144,7 +144,7 @@ vec4 position( mat4 transform_projection, vec4 vertex_position )
|
|||||||
if (hovering <= 0.){
|
if (hovering <= 0.){
|
||||||
return transform_projection * vertex_position;
|
return transform_projection * vertex_position;
|
||||||
}
|
}
|
||||||
MY_HIGHP_OR_MEDIUMP float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
MY_HIGHP_OR_MEDIUMP float mid_dist = screen_scale*length(vertex_position.xy/screen_scale - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||||
MY_HIGHP_OR_MEDIUMP vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
MY_HIGHP_OR_MEDIUMP vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||||
MY_HIGHP_OR_MEDIUMP float scale = 0.002*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
MY_HIGHP_OR_MEDIUMP float scale = 0.002*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||||
|
@ -19,22 +19,22 @@ vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
|||||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
MY_HIGHP_OR_MEDIUMP float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
||||||
|
|
||||||
float t = time * 10.0 + 2003.;
|
MY_HIGHP_OR_MEDIUMP float t = time * 10.0 + 2003.;
|
||||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
MY_HIGHP_OR_MEDIUMP vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
||||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
MY_HIGHP_OR_MEDIUMP vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
||||||
|
|
||||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
MY_HIGHP_OR_MEDIUMP vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
MY_HIGHP_OR_MEDIUMP vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
MY_HIGHP_OR_MEDIUMP vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||||
|
|
||||||
float field = (1.+ (
|
MY_HIGHP_OR_MEDIUMP float field = (1.+ (
|
||||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||||
vec2 borders = vec2(0.2, 0.8);
|
MY_HIGHP_OR_MEDIUMP vec2 borders = vec2(0.2, 0.8);
|
||||||
|
|
||||||
float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
MY_HIGHP_OR_MEDIUMP float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
||||||
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||||
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||||
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||||
@ -53,20 +53,20 @@ vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
|||||||
|
|
||||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||||
{
|
{
|
||||||
vec4 tex = Texel( texture, texture_coords);
|
MY_HIGHP_OR_MEDIUMP vec4 tex = Texel( texture, texture_coords);
|
||||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
MY_HIGHP_OR_MEDIUMP vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
||||||
|
|
||||||
number low = min(tex.r, min(tex.g, tex.b));
|
MY_HIGHP_OR_MEDIUMP number low = min(tex.r, min(tex.g, tex.b));
|
||||||
number high = max(tex.r, max(tex.g, tex.b));
|
MY_HIGHP_OR_MEDIUMP number high = max(tex.r, max(tex.g, tex.b));
|
||||||
number delta = max(high-low, low*0.7);
|
MY_HIGHP_OR_MEDIUMP number delta = max(high-low, low*0.7);
|
||||||
|
|
||||||
number fac = 0.8 + 0.9*sin(13.*uv.x+5.32*uv.y + booster.r*12. + cos(booster.r*5.3 + uv.y*4.2 - uv.x*4.));
|
MY_HIGHP_OR_MEDIUMP number fac = 0.8 + 0.9*sin(13.*uv.x+5.32*uv.y + booster.r*12. + cos(booster.r*5.3 + uv.y*4.2 - uv.x*4.));
|
||||||
number fac2 = 0.5 + 0.5*sin(10.*uv.x+2.32*uv.y + booster.r*5. - cos(booster.r*2.3 + uv.x*8.2));
|
MY_HIGHP_OR_MEDIUMP number fac2 = 0.5 + 0.5*sin(10.*uv.x+2.32*uv.y + booster.r*5. - cos(booster.r*2.3 + uv.x*8.2));
|
||||||
number fac3 = 0.5 + 0.5*sin(12.*uv.x+6.32*uv.y + booster.r*6.111 + sin(booster.r*5.3 + uv.y*3.2));
|
MY_HIGHP_OR_MEDIUMP number fac3 = 0.5 + 0.5*sin(12.*uv.x+6.32*uv.y + booster.r*6.111 + sin(booster.r*5.3 + uv.y*3.2));
|
||||||
number fac4 = 0.5 + 0.5*sin(4.*uv.x+2.32*uv.y + booster.r*8.111 + sin(booster.r*1.3 + uv.y*13.2));
|
MY_HIGHP_OR_MEDIUMP number fac4 = 0.5 + 0.5*sin(4.*uv.x+2.32*uv.y + booster.r*8.111 + sin(booster.r*1.3 + uv.y*13.2));
|
||||||
number fac5 = sin(0.5*16.*uv.x+5.32*uv.y + booster.r*12. + cos(booster.r*5.3 + uv.y*4.2 - uv.x*4.));
|
MY_HIGHP_OR_MEDIUMP number fac5 = sin(0.5*16.*uv.x+5.32*uv.y + booster.r*12. + cos(booster.r*5.3 + uv.y*4.2 - uv.x*4.));
|
||||||
|
|
||||||
number maxfac = 0.6*max(max(fac, max(fac2, max(fac3,0.0))) + (fac+fac2+fac3*fac4), 0.);
|
MY_HIGHP_OR_MEDIUMP number maxfac = 0.6*max(max(fac, max(fac2, max(fac3,0.0))) + (fac+fac2+fac3*fac4), 0.);
|
||||||
|
|
||||||
tex.rgb = tex.rgb*0.5 + vec3(0.4, 0.4, 0.8);
|
tex.rgb = tex.rgb*0.5 + vec3(0.4, 0.4, 0.8);
|
||||||
|
|
||||||
@ -88,9 +88,9 @@ vec4 position( mat4 transform_projection, vec4 vertex_position )
|
|||||||
if (hovering <= 0.){
|
if (hovering <= 0.){
|
||||||
return transform_projection * vertex_position;
|
return transform_projection * vertex_position;
|
||||||
}
|
}
|
||||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
MY_HIGHP_OR_MEDIUMP float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
MY_HIGHP_OR_MEDIUMP vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
MY_HIGHP_OR_MEDIUMP float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||||
|
|
||||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||||
|
Before Width: | Height: | Size: 493 KiB After Width: | Height: | Size: 493 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 598 KiB After Width: | Height: | Size: 598 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 6.6 KiB |
14
tag.lua
@ -122,7 +122,7 @@ function Tag:apply_to_run(_context)
|
|||||||
end)
|
end)
|
||||||
self.triggered = true
|
self.triggered = true
|
||||||
return {
|
return {
|
||||||
dollars = 15,
|
dollars = self.config.dollars,
|
||||||
condition = localize('ph_defeat_the_boss'),
|
condition = localize('ph_defeat_the_boss'),
|
||||||
pos = self.pos,
|
pos = self.pos,
|
||||||
tag = self
|
tag = self
|
||||||
@ -358,6 +358,8 @@ function Tag:apply_to_run(_context)
|
|||||||
card.states.visible = false
|
card.states.visible = false
|
||||||
self:yep('+', G.C.RED,function()
|
self:yep('+', G.C.RED,function()
|
||||||
card:start_materialize()
|
card:start_materialize()
|
||||||
|
card.ability.couponed = true
|
||||||
|
card:set_cost()
|
||||||
return true
|
return true
|
||||||
end)
|
end)
|
||||||
else
|
else
|
||||||
@ -370,6 +372,8 @@ function Tag:apply_to_run(_context)
|
|||||||
card.states.visible = false
|
card.states.visible = false
|
||||||
self:yep('+', G.C.GREEN,function()
|
self:yep('+', G.C.GREEN,function()
|
||||||
card:start_materialize()
|
card:start_materialize()
|
||||||
|
card.ability.couponed = true
|
||||||
|
card:set_cost()
|
||||||
return true
|
return true
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
@ -395,6 +399,8 @@ function Tag:apply_to_run(_context)
|
|||||||
_context.card.temp_edition = true
|
_context.card.temp_edition = true
|
||||||
self:yep('+', G.C.DARK_EDITION,function()
|
self:yep('+', G.C.DARK_EDITION,function()
|
||||||
_context.card:set_edition({foil = true}, true)
|
_context.card:set_edition({foil = true}, true)
|
||||||
|
_context.card.ability.couponed = true
|
||||||
|
_context.card:set_cost()
|
||||||
_context.card.temp_edition = nil
|
_context.card.temp_edition = nil
|
||||||
G.CONTROLLER.locks[lock] = nil
|
G.CONTROLLER.locks[lock] = nil
|
||||||
return true
|
return true
|
||||||
@ -405,6 +411,8 @@ function Tag:apply_to_run(_context)
|
|||||||
self:yep('+', G.C.DARK_EDITION,function()
|
self:yep('+', G.C.DARK_EDITION,function()
|
||||||
_context.card.temp_edition = nil
|
_context.card.temp_edition = nil
|
||||||
_context.card:set_edition({holo = true}, true)
|
_context.card:set_edition({holo = true}, true)
|
||||||
|
_context.card.ability.couponed = true
|
||||||
|
_context.card:set_cost()
|
||||||
G.CONTROLLER.locks[lock] = nil
|
G.CONTROLLER.locks[lock] = nil
|
||||||
return true
|
return true
|
||||||
end)
|
end)
|
||||||
@ -414,6 +422,8 @@ function Tag:apply_to_run(_context)
|
|||||||
self:yep('+', G.C.DARK_EDITION,function()
|
self:yep('+', G.C.DARK_EDITION,function()
|
||||||
_context.card.temp_edition = nil
|
_context.card.temp_edition = nil
|
||||||
_context.card:set_edition({polychrome = true}, true)
|
_context.card:set_edition({polychrome = true}, true)
|
||||||
|
_context.card.ability.couponed = true
|
||||||
|
_context.card:set_cost()
|
||||||
G.CONTROLLER.locks[lock] = nil
|
G.CONTROLLER.locks[lock] = nil
|
||||||
return true
|
return true
|
||||||
end)
|
end)
|
||||||
@ -423,6 +433,8 @@ function Tag:apply_to_run(_context)
|
|||||||
self:yep('+', G.C.DARK_EDITION,function()
|
self:yep('+', G.C.DARK_EDITION,function()
|
||||||
_context.card.temp_edition = nil
|
_context.card.temp_edition = nil
|
||||||
_context.card:set_edition({negative = true}, true)
|
_context.card:set_edition({negative = true}, true)
|
||||||
|
_context.card.ability.couponed = true
|
||||||
|
_context.card:set_cost()
|
||||||
G.CONTROLLER.locks[lock] = nil
|
G.CONTROLLER.locks[lock] = nil
|
||||||
return true
|
return true
|
||||||
end)
|
end)
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
1.0.0n-FULL
|
1.0.1f-FULL
|
||||||
1.0.0n
|
1.0.1f
|
||||||
Console_other
|
Console_other
|